1 | # CHANGES for indexeddbshim
|
2 |
|
3 | # 7.0.0
|
4 |
|
5 | - Breaking change: Require Node >= 10
|
6 | - Enhancement: By way of `typeson-registry`, support `CryptoKey`
|
7 | - Docs: Update dev. license badge per latest
|
8 | - Linting: As per latest ash-nazg
|
9 | - npm: Update deps. (`regenerator-runtime`, `typeson-registry`) devDeps.
|
10 |
|
11 | ## 6.6.0 (releasing again as `indexeddbshim` and deprecating `@indexeddbshim/indexeddbshim`)
|
12 |
|
13 | - Incorporate previous relevant updates made to `@indexeddbshim/indexeddbshim`
|
14 | - Linting: As per latest ash-nazg
|
15 | - npm: Add `lint` to `test`
|
16 | - npm: Update devDeps. (and bundled mocha copy)
|
17 |
|
18 | ## 6.5.0 (was published to `@indexeddbshim/indexeddbshim` only)
|
19 |
|
20 | - Linting: As per latest ash-nazg
|
21 | - Build: Update mocha copy
|
22 | - Testing: Switch to stable version of `cypress-multi-reporters`
|
23 | - npm: Add `prepublishOnly` script
|
24 | - npm: Update `typeson-registry`
|
25 | - npm: Update devDeps.
|
26 |
|
27 | ## 6.4.0 (was published to `@indexeddbshim/indexeddbshim` only)
|
28 |
|
29 | - Build: Update per latest devDeps.
|
30 | - Build: Report compared to last build size
|
31 | - Linting: As per latest ash-nazg
|
32 | - Testing: Update tests to continue working per latest Node/jsdom
|
33 | - Testing: Switch to `cmrOutput`-supporting `cypres-multi-reporters` fork
|
34 | (no need for Promise-based mocha-multi-reporters fork with proper
|
35 | implementation)
|
36 | - Docs: Switch to mocha-badge-generator fork for proper async behavior
|
37 | - Docs: Update license badges
|
38 | - npm: Switch from deprecated rollup-plugin-babel to rollup/plugin-babel
|
39 | - npm: Update typeson-registry dep.
|
40 | - npm: Update devDeps (related to Babel, Rollup, ESLint, core-js,
|
41 | jsdom, badges, mocha/nyc, sinon, source-map-support, ws)
|
42 |
|
43 | ## 6.3.0 (was published to `@indexeddbshim/indexeddbshim` only)
|
44 |
|
45 | - Build: Fix per current fork
|
46 | - Docs: Update coverage badge per latest coveradge
|
47 | - Linting (ESLint): As per latest ash-nazg
|
48 | - npm: Point to now merged `mocha-badge-generator`
|
49 | - npm: Update devDeps
|
50 |
|
51 | ## 6.2.1 (was published to `@indexeddbshim/indexeddbshim` only)
|
52 |
|
53 | - Docs: Fix badges
|
54 |
|
55 | ## 6.2.0 (was published to `@indexeddbshim/indexeddbshim` only)
|
56 |
|
57 | - Fork from <https://github.com/axemclion/IndexedDBShim>.
|
58 | - Project: Add Github Sponors button to be able to accept funding
|
59 | - Project: Restore demo via Github Pages
|
60 | - Fix (React Native/Webpack): Add CFG item `fs` (which the Node
|
61 | files automatically set) to allow removal of database files
|
62 | without disturbing non-Node environments that do their own
|
63 | special handling of `require` statements
|
64 | - Fix (Android): Overcome apparent Android SQLite mishandling of
|
65 | boolean (convert to `Number`)
|
66 | - Build: Drop Grunt in favor of equivalent npm scripts
|
67 | - Testing (W3C): Update per latest wpt
|
68 | - npm: Update devDeps/package-lock.json
|
69 |
|
70 | ## 6.1.0
|
71 |
|
72 | - Build (change/optimization): Remove `browersify`/`babelify`/
|
73 | `mapstraction` process in favor of `grunt-rollup` with plugins;
|
74 | reduces minified build size and expands non-minfiied size (so that
|
75 | the source incorporated from `typeson`/`typeson-registry` is not
|
76 | minified)
|
77 | - `indexeddbshim-noninvasive.min.js` (182 KB -> 154 KB)
|
78 | - `indexeddbshim.min.js` (165 KB -> 137 KB)
|
79 | - `indexeddbshim-Key.min.js` (27.7 KB -> 16 KB)
|
80 | - Enhancement: Check that `navigator.userAgent` even exists (avoid erring
|
81 | in React Native)
|
82 | - Fix: `__forceClose` method with nullish value as name was not closing
|
83 | all connections
|
84 | - Linting (ESLint): Add file extensions; lint `.eslintrc` file itself;
|
85 | enable other disabled rules
|
86 | - Docs: Add license badges (with `license-badger` routine)
|
87 | - Testing: Remove `grunt-qunit-puppeteer` devDep. (slow to install)
|
88 | - Testing (Mocha): Allow Firefox tests to pass
|
89 | - Testing (W3C): Bump memory so tests can complete
|
90 | - npm: Update dep. `typeson-registry` (for `module` importing)
|
91 | - npm: Add `package-lock.json` (needed by `npm audit`)
|
92 | - npm: Update devDeps
|
93 | - yarn: Remove `yarn.lock` (having some difficulties installing everything)
|
94 |
|
95 | ## 6.0.1
|
96 |
|
97 | - Note that the typeson updates include some important fixes for accurately
|
98 | storing certain types or combinations of types
|
99 | - Fix: For `CFG.fullIDLSupport`, revert setting of prototypes of
|
100 | `IDBCursor`, `IDBKeyRange`, `IDBIndex`, `IDBObjectStore`,
|
101 | `IDBFactory` to objects that serialize to
|
102 | `[object ObjectPrototype]`
|
103 | - Linting (ESLint): Latest as per ash-nazg
|
104 | - Travis: Change to 10 and 12
|
105 | - Testing (W3C): Update web-platform-tests
|
106 | - Testing (W3C): Shim objects that are only checked for exposure
|
107 | - Testing (W3C): Avoid reporting known failures as unexpected
|
108 | - Testing (W3C): Update test counts
|
109 | - npm: Add script for updating submodules
|
110 | - npm: Update deps (typeson and typeson-registry)
|
111 | - npm: Update devDeps
|
112 |
|
113 | ## 6.0.0
|
114 |
|
115 | - npm (BREAKING CHANGE): Move core-js-bundle out of deps; user to install
|
116 | if needed for supported environments
|
117 | - Fix: For `CFG.fullIDLSupport`, ensure prototypes of `IDBCursor`,
|
118 | `IDBKeyRange`, `IDBIndex`, `IDBObjectStore`, `IDBFactory` are
|
119 | objects that serialize to `[object ObjectPrototype]`
|
120 | - Linting (ESLint): Apply latest updates
|
121 | - Testing (W3C): Avoid hack in test to deal with missing prototype;
|
122 | do not inject `Object` on full IDL tests
|
123 | - Testing (W3C): Add `structured-clone.any.js` to known `badFiles` list
|
124 | - Testing (W3C): Add `MessageChannel`
|
125 | - Testing (W3C): Add canvas for `ImageData`
|
126 | - Docs: Link to TrialTool
|
127 | - npm: Remove `package-lock.json` in favor of `yarn.lock`
|
128 | - npm: Bump `typeson-registry` (Cause `Event` and `MessageChannel` to
|
129 | throw upon attempted cloning); update `typeson`; bump devDeps and
|
130 | local copies
|
131 |
|
132 | ## 5.0.0
|
133 |
|
134 | - Breaking change: Move from deprecated `@babel/polyfill` to
|
135 | recommended replacements `core-js-bundle` /
|
136 | `regenerator-runtime`
|
137 | - Fix: For unescaping unmatched surrogates preceded by carets, we need to
|
138 | restore the carets
|
139 | - Fix: Avoid erring in some instances with not-yet-added name key
|
140 | for `cacheDatabaseInstances` or `memoryDatabase`
|
141 | - Fix (Missing API): Add new `IDBCursor.request`
|
142 | - Fix (example): Paths in `IDBKeyUtils.html` examples file
|
143 | - Optimization (build): Avoid `build` step as bundling `dist` files anyways;
|
144 | avoid linting step as it has problem in grunt
|
145 | - Refactoring: Change private `__closed` flag to match spec
|
146 | terminology, `__closePending`.
|
147 | - Refactoring: Add `__done` flag to match spec, with `readyState`
|
148 | getter using this flag
|
149 | - Linting (ESLint): Update for `eslint-config-ash-nazg` (prefer
|
150 | `for...of` and `includes`, etc.)
|
151 | - Linting (ESLint): Lint HTML and Markdown
|
152 | - Docs (JSDoc): Add returns and some additional docs
|
153 | - Docs (Code): Better toward `max-len`
|
154 | - Docs (README): Use paths more consistent with installing
|
155 | indexeddbshim as dep.
|
156 | - Docs (README): Indicate ESM usage; fix broken link
|
157 | - Docs (TESTING): Info on individual tests
|
158 | - Testing (W3C): Update wpt; test results; fix regression
|
159 | - Testing (W3C): Exclude tests causing undue timeouts in other files; update
|
160 | test counts
|
161 | - Testing (W3C): Avoid excluding non-breaking test
|
162 | - Testing (W3C): Support new "any" files (and support future ones) and
|
163 | fix for `location`; report reason for new test file failing; update
|
164 | `web-platform-tests`; avoid excluded files in list of failed;
|
165 | add scripts to list files in test folder which are not in goodBad
|
166 | listing
|
167 | - Grunt: Avoid eslint task for main build as having problems with lint config
|
168 | - npm: Update `typeson`/`typeson-registry`, `eventtargeter`
|
169 | - npm: Update devDeps; package-lock
|
170 |
|
171 | ## 4.1.0
|
172 |
|
173 | - Optimization: Update `typeson-registry` to return to more space-optimal
|
174 | array format when arrays do not have non-index keys (while still
|
175 | supporting arrays with non-index keys) and `undefined` and
|
176 | sparse arrays formats (though all are backward-compatible with
|
177 | old data).
|
178 | - Docs (README): Update note on typeson-registry-sca-reverter
|
179 | - npm: Add `request` peer dep
|
180 | - npm: Bump devDeps and adjust linting accordingly
|
181 |
|
182 | ## 4.0.1
|
183 |
|
184 | - Build fix: Apply `browserslist` to `@babel/env`; update typeson-registry
|
185 | to get its `browserslist` fix
|
186 |
|
187 | ## 4.0.0
|
188 |
|
189 | - Breaking change: **WARNING**: If you need 4.0.0 to work with data stored
|
190 | under 3.\*, you need to add a callback as the value of the new
|
191 | `CFG.registerSCA` config with a value set to the function exported from
|
192 | [typeson-registry-sca-reverter](https://github.com/brettz9/typeson-registry-sca-reverter),
|
193 | and do so before you make your `indexedDB` calls. This code was part of
|
194 | IndexedDBShim, but is no longer bundled with it, as IndexedDBShim, as of
|
195 | version 4.0.0 is now using the new typeson-registry Structured Cloning
|
196 | Algorithm format by default for representing cloneable data as JSON.
|
197 | - Breaking fix: Representation of Arrays to allow storage of non-index
|
198 | properties (courtesy of updated typeson-registry)
|
199 | - Breaking fix: Representation of Blobs as binary to avoid UTF16 representation
|
200 | dropping unpaired surrogates (courtesy of updated typeson-registry); also assumes
|
201 | XHR has `overrideMimeType`
|
202 | - Breaking change: `webkitGetDatabaseNames` removed in favor of now-standard
|
203 | `databases` (see <https://github.com/w3c/IndexedDB/pull/240/files>)
|
204 | - Breaking change; Remove Bower completely (service was deprecated);
|
205 | use npm or yarn
|
206 | - Breaking change: Switch from `babel-polyfill` to `@babel/polyfill`
|
207 | (script tag paths for polyfill will need to be updated)
|
208 | - Breaking change: Remove support for previously deprecated numeric
|
209 | constants as second arguments to `IDBDatabase.prototype.transaction`
|
210 | (to use `readonly`/`readwrite` instead).
|
211 | - Breaking change: Remove our non-standard `IDBFactory.modules`
|
212 | (non-IDB shims or polyfills available through `CFG.addNonIDBGlobals`
|
213 | or `CFG.replaceNonIDBGlobals`, respectively, with shims prefixing
|
214 | class names with "Shim")
|
215 | - Breaking change: Remove our non-standard `IDBFactory.utils` and move its
|
216 | test utility `createDOMException` to named export of `setGlobalVars.js`
|
217 | - Fix: If stored data had an even number of caret characters (`^`) followed
|
218 | by a `0`, the final caret would mistakenly be interpreted with the
|
219 | `0` as a NUL character as part of unescaping (which could in turn cause
|
220 | errors)
|
221 | - Fix: Compile to target 100% coverage (including e.g., iOS)
|
222 | - Enhancement: Support `BigInt()` and `Object(BigInt())`
|
223 | - Optimization: Import all of single typeson-registry to reduce file size
|
224 | from two versions
|
225 | - Refactoring: Add empty favicon to avoid extra console messages; load after
|
226 | title
|
227 | - Linting (ESLint): Switch Node-11-deprecated url methods
|
228 | - Linting (ESLint): Add and apply eslint-plugin-qunit-recommended rules; add
|
229 | checks for browser support using eslint-plugin-compat; apply
|
230 | `eslint-config-ash-nazg` rules; use `.js` for linting file
|
231 | - Testing (W3C): Instructions and results for using `wpt run`; wrap
|
232 | dynamic files
|
233 | - Testing (W3C): Update worker BSON per new BSON API; use new
|
234 | `XMLHttpRequest` partial polyfill; update wpt
|
235 | - Testing (Puppeteer QUnit): Avoid build step
|
236 | - Testing (QUnit): Ensure deleting database before testing version
|
237 | - Demo: Update copy of sinon
|
238 | - Docs: Max-length
|
239 | - Docs: Add "versions" section for migration info; note in code on
|
240 | deprecating old typeson names
|
241 | - npm: Add `yarn` to `prepublishOnly` script
|
242 | - npm: Add "wpt" as alias script for "web-platform-tests"; add "lint"
|
243 | script to test non-Grunt eslint
|
244 | - npm: Update eventtargeter and typeson/typeson-registry deps and devDeps
|
245 | - npm: Update devDeps (and their local copies); avoid `js-polyfills`
|
246 | in favor of Node `URL`/`URLSearchParams`
|
247 |
|
248 | [typeson-registry-sca-reverter](https://github.com/brettz9/typeson-registry-sca-reverter)
|
249 |
|
250 | ## 3.10.0
|
251 |
|
252 | - Fix: Ensure multiEntry sorts address possibility of nested array
|
253 | keys (Courtesy lgtm)
|
254 | - Fix: For interface tests, ensure properties are getter based
|
255 | - Refactoring: Factor out common interface code (making
|
256 | `IDBRequest` and `IDBOpenRequest` listeners `enumerable` too)
|
257 | - Testing (W3C): Update web-platform-tests (including repo location)
|
258 | - Testing (W3C): Use new `idlharness.any.html` over `interfaces.any.html`
|
259 | - Travis: Update Node version (having issues with Yarn)
|
260 | - Docs: Remove Bower badge
|
261 |
|
262 | ## 3.9.0
|
263 |
|
264 | - Fix: Upon converting value to key range, avoid creating new
|
265 | `IDBKeyRange` instance when already existing (flagged by LGTM.com)
|
266 | - Refactoring: Avoid useless assignment (flagged by LGTM.com); object
|
267 | destructuring
|
268 | - npm: Update devDeps
|
269 | - Linting (ESLint): Override new "standard" ESLint to prevent spacing
|
270 | around object curly quotes; deprecated assert APIs
|
271 |
|
272 | ## 3.8.0
|
273 |
|
274 | - npm: Update devDeps
|
275 | - npm: With updates to node-pre-gyp, rebuild `package-lock.json`; fixes #321
|
276 | - yarn: Update `yarn.lock`
|
277 | - Testing: Update `web-platform-tests`
|
278 | - Demo site: Update sinon version to work on rawgit.com
|
279 |
|
280 | ## 3.7.0
|
281 |
|
282 | - npm: Update websql fork dep. (which updates sqlite3 to 4.0.0)
|
283 | - npm: Switch unicode-10.0.0 to devDep (with copy routine);
|
284 | Fixes #323
|
285 | - npm: Update devDeps and `package-lock.json` (surface dependency
|
286 | security fixes) (Temporary fix for #321 until Grunt
|
287 | and node-pre-gyp->sqlite3(->websql) update)
|
288 | - Refactoring: Remove unnecessary `type=text/css`
|
289 | - Testing (Grunt): Fix clean-polyfill task (fixes #322)
|
290 | - Testing (Grunt): Replace phantom-qunit with puppeteer-qunit
|
291 | - Testing (QUnit): Fix issue with QUnit 2 (move sample data into test
|
292 | starting file); see https://stackoverflow.com/a/38791824/271577
|
293 | (fixes #324)
|
294 | - Testing: Update `web-platform-tests`
|
295 |
|
296 | ## 3.6.2
|
297 |
|
298 | - Fix (Node): Respect the `databaseBasePath` setting for database
|
299 | deletions (#319); test courtesy @mikelehen
|
300 | - Fix (Node): Error (and warning) in cleaning up memory database
|
301 | resources (#320); test and fix courtesy @mikelehen
|
302 | - Fix/optimization (Node): Don't remove cache after success, but if using
|
303 | cache, ensure getting last version and ensure async before
|
304 | dispatching any version error
|
305 | - Refactoring: Avoid redundant `function` on object literals
|
306 | - npm: Fix web-platform-tests script
|
307 |
|
308 | ## 3.6.1
|
309 |
|
310 | - Critical fix (Please upgrade from any previous 3.0.0 version):
|
311 | Ensure unescaping done in SQL responses (and database names) always adds
|
312 | back any literal `^` sequences. This loss could more easily happen for
|
313 | database names (whenever the name had a sequence of 1 or more literal `^`
|
314 | followed by a single `A` to `Z` (or `[\u0000-\u001F\u007F"*/:<>?\\|]`
|
315 | or characters expanding on NFD normalization), but it could also happen
|
316 | in general SQL responses (or database names) where there was a sequence
|
317 | of 1 or more literal `^` followed by an unmatched surrogate (though this
|
318 | should admittedly be unlikely for most users); this unescaping was meant
|
319 | to build back unmatched surrogates (which are allowed in IndexedDB)
|
320 | and the like which were unsafe for the SQLite engine used internally or
|
321 | for the file system used for Node, but we were failing to add back the
|
322 | `^` escape in such cases (which was used as an escape character).
|
323 |
|
324 | ## 3.6.0
|
325 |
|
326 | - Refactoring/Fix: For default `escapeNFDForDatabaseNames` check, temporarily
|
327 | circumvent current limitations in Babel until
|
328 | <https://github.com/babel/babel/issues/5978> addressed; (see also
|
329 | <https://github.com/axemclion/IndexedDBShim/issues/311#issuecomment-316090147>);
|
330 | fixes #311
|
331 | - Linting: Expand ESLint file coverage and apply minor linting fix to test file
|
332 | - Testing: Update web-platform-tests and our tests accordingly
|
333 | - npm: Update `eventtargeter` to avoid automatic `Object.setPrototypeOf`
|
334 | calls (make conditional on `CFG.fullIDLSupport`); fixes #313
|
335 |
|
336 | ## 3.5.1
|
337 |
|
338 | - npm: Update `package-lock.json`
|
339 | - npm: Resume allowing Node versions 8.93 - 9.0.0
|
340 | - Docs: Put message in README about failure of one test as a known
|
341 | issue for the above Node versions
|
342 |
|
343 | ## 3.5.0
|
344 |
|
345 | - Breaking fix (through npm): Update typeson and typeson-registry
|
346 | (ArrayBuffer, DataView, and typed arrays were not properly
|
347 | preserving entire underlying buffer when only a portion used;
|
348 | were also not restoring when buffers were reused cyclically
|
349 | across an object)
|
350 | - npm: Update dev deps
|
351 | - Install: Update `yarn.lock`/`package-lock.json`
|
352 | - Testing (W3C): Update web-platform-tests
|
353 |
|
354 | ## 3.4.0
|
355 |
|
356 | - Fix (minor): Return proper `indexedDB` object descriptor
|
357 | - npm: Update devDeps
|
358 | - npm: Update dep to unicode-10.0.0 (no practical difference)
|
359 | - Testing (W3C): Remove need for cheerio in build (use jsdom instead)
|
360 | - Testing (W3C): Update `web-platform-tests`
|
361 |
|
362 | ## Version 3.3.1
|
363 |
|
364 | - Build: Switch from `devDependencies` to `dependencies` the following which
|
365 | Node or custom rollups may require: eventtargeter, sync-promise,
|
366 | typeson, typeson-registry, unicode-9.0.0
|
367 |
|
368 | ## Version 3.3.0
|
369 |
|
370 | - Build: More complete `.npmignore` to exclude more files at root that we
|
371 | don't need in distributions
|
372 | - Build: Amend `.npmignore` to allow for `src` inclusion (for those who
|
373 | wish to rollup own (complete or partial) versions)
|
374 | - Build: Update file copies out of `node_modules` needed for Rawgit demo
|
375 |
|
376 | ## Version 3.2.0
|
377 |
|
378 | - Fix: Deal with issue with Chrome/Node and `Number.MIN_VALUE` converting
|
379 | to string
|
380 | - npm: Add `module` to `package.json` for potential use by Webpack/Rollup
|
381 | - npm: Limit engines to exclude Node 8.9.3 as having problems with Mocha
|
382 | IDBIndex/openCursor-spec.js test
|
383 | "should query multi-entry indexes with hundreds of records"; may be
|
384 | other problematic versions but 7.7.4 and 9.2.1 are ok
|
385 | - npm (Build): Update devDeps including versioned `eventtargeter`, `typeson`,
|
386 | and `typeson-registry`
|
387 | - npm (Build/Testing): Add missing `babel-core` devDep
|
388 | - npm (Build): Preserve LICENSE info in `npmignore` (and avoid redundant items)
|
389 | - npm (Testing): Add `web-platform-tests` and `sqlite-rebuild` scripts
|
390 | - npm (Testing): Update W3C test script to clean before beginning as well
|
391 | - Build: For Babel, use env over deprecated es2015; rebuild
|
392 | - Build: Add `yarn.lock`
|
393 | - Docs: Remove outdated polyfill info in README (babel-polyfill should cover)
|
394 | - Demo: Add example of IDBKeyUtils usage (not documented yet)
|
395 | - License: Rename files to include file extensions for Windows
|
396 |
|
397 | ## Version 3.1.0
|
398 |
|
399 | - Fix: `update` and `delete` were invalidating the cache and thus
|
400 | mistakenly incrementing cursor index; no longer invalidating the
|
401 | (read-only) cache
|
402 | - Enhancement: As part of #283 on export improvements, provide build
|
403 | process for `Key.js` file to function as standalone file (currently
|
404 | targeted for Chrome)
|
405 | - Refactoring: In order to minimize build size for standalone `Key.js`,
|
406 | move `cmp` out of `IDBFactory` and reference it.
|
407 | - npm: Update dev deps (including using harmony branch of
|
408 | grunt-contrib-uglify for correct ES6 support)
|
409 |
|
410 | ## Version 3.0.4
|
411 |
|
412 | - Fix (Edge case): For `IDBDatabase.transaction()` (`storeNames` arg),
|
413 | `IDBDatabase.createObjectStore` (`keyPath` parameter), and
|
414 | `IDBObjectStore.createIndex` (`keyPath` argument), ensure
|
415 | conversion to DOMString (`ToString`) is being called per WebIDL
|
416 | (e.g., passing `true` would produce a valid `"true"`) while still
|
417 | throwing upon missing argument
|
418 | - Optimize: We didn't actually need structured cloning for keypaths as
|
419 | keypaths are valid JSON (but we did need the edge cases handled
|
420 | per the accompanying fix and the Typeson encoded as of 3.0.0 should
|
421 | remain compatible with this reversion to JSON)
|
422 | - Refactoring (minor): Use ES6 object property name shorthand
|
423 | - npm: Update dev deps
|
424 | - Demo: Update copies of test files
|
425 |
|
426 | ## Version 3.0.3
|
427 |
|
428 | - Fix: Avoid allowing (open-ended) escaped Unicode escape sequences
|
429 | for key paths (JavaScript handles the escape sequences!).
|
430 | - Fix: Avoid double-escaping zero-width joiners/non-joiner in key
|
431 | path check.
|
432 | - npm: Update dev deps
|
433 |
|
434 | ## Version 3.0.2
|
435 |
|
436 | - Fix: Incorporate `typeson` library fix for periods within
|
437 | property names; could create cloning issues
|
438 | - Linting: Update per linting software updates (indents)
|
439 | though avoid `no-mulit-spaces` reporting (frequent in tests)
|
440 | - Linting: Update and apply ESLint compat plugin linting
|
441 | - npm: Update dev deps
|
442 | - npm: Avoid shrinkwrap for now, pending
|
443 | <https://github.com/benmosher/eslint-plugin-import/pull/871>
|
444 | - Testing (W3C): Update `web-platform-tests`
|
445 | - Testing (W3C): Exclude new `large-nesting-cloning.js` file as preventing
|
446 | some other tests from running; also remove `parallel-cursors.uprade.js`
|
447 | from good tests as in timeouts (since it sometimes times out)
|
448 | - Docs (Testing): Update note on running W3C Node tests
|
449 | - Docs (README): Fixed first hyperlink not working (courtesy @Erwin)
|
450 |
|
451 | ## Version 3.0.1
|
452 |
|
453 | - Update in case lagging `npm shrinkwrap` version causing any issues
|
454 | - Docs (README): Update version number and remove completed to-do
|
455 | - Testing: Update copies of Mocha/Chai/Sinon (for rawgit.com)
|
456 | - Testing (Grunt): Comment out cumbersome minified version updater
|
457 | - Testing (W3C): Revert from apparently problematic `cheerio` RC
|
458 |
|
459 | ## Version 3.0.0
|
460 |
|
461 | Though we have tried to keep this accurate, some changes listed below might
|
462 | have been mistakenly ascribed to changes since the previous release whereas
|
463 | they were actually changes since a more recent version on `master`.
|
464 |
|
465 | - License: Add back missing MIT license
|
466 | - Security fix: Avoid SQL injection potential--ensure database, store and
|
467 | index names are prefixed as SQLite columns to avoid conflict with built-in
|
468 | columns; add test
|
469 | - Security fix: Ensure `LIKE` clauses escape special characters
|
470 | - Security fix: Escape SQLite-disallowed-for-column-names NUL characters from
|
471 | database, store, and index names
|
472 | - Security fix: Escape/unescape NUL for safety with
|
473 | node-websql->node-sqlite3 (part of fix for #274)
|
474 | - Security fix: Ensure quoting (for column names) escapes double quotes
|
475 | - Security fix: As per new requirements, ensure `IDBFactory` methods `open`,
|
476 | `deleteDatabase` (and we do it for the non-standard
|
477 | `webkitGetDatabaseNames` as well as it could relate to privacy) throw a
|
478 | `SecurityError` `DOMException` if run from a `"null"` origin (unless the
|
479 | new config `checkOrigin` is set to `false`); for Node, requires
|
480 | `location` to be defined globally (could have some applications in Node,
|
481 | too, e.g., if jsdom sets the origin for iframes)
|
482 | - Breaking refactoring with consequences for old data: prefix store/index
|
483 | names with "S_" instead of "s_" and "I_" instead of "_" (consistent
|
484 | with casing of "D_" though SQLite insensitive with ASCII while file
|
485 | systems may be sensitive; more future-compatible)
|
486 | - Breaking change: Avoid encoding `keyPath` internally as JSON--needs
|
487 | Sca encoding; ~breaks all tables but important to fix!~
|
488 | _Shouldn't have broken tables as supplied keypaths should only have
|
489 | produced Typeson that is JSON; other breaking db changes were needed
|
490 | in this version, however_
|
491 | - Breaking change/Fix: Remove `IDBTransaction` mode constants and tests since
|
492 | now being removed from IndexedDB
|
493 | - Breaking change: Remove old `polyfill.js` code for incrementally
|
494 | plugging browsers with incomplete support (has not been tested for a long
|
495 | time and had perhaps not been properly kept up to date anyways); one
|
496 | can still use IndexedDBShim to replace the whole implementation, however.
|
497 | - Breaking change: Throw if database name is too long, defaulting to 254 (part
|
498 | of fix for #274) (enforcing compatibility with Node, given our mapping it to
|
499 | file naming on common file systems)
|
500 | - Breaking change: If you were overriding/monkey-patching globals, these are
|
501 | no longer available with a shift to ES6 modules (see below). The `CFG.js`
|
502 | module can be imported in its place to change the default values, however.
|
503 | - Breaking fix for existing data: Give comparisons/storage of arrays
|
504 | higher priority over binary (arrays already existing in storage
|
505 | will not benefit from this until re-encoded, however)
|
506 | - Breaking fix for existing data: Change encoding of key types so any future
|
507 | key types can be fitted into the proper place for sorting precedence
|
508 | - Breaking change (minor): Change "modules" property of `IDBFactory` to only
|
509 | expose `DOMException`, `Event`, and `IDBFactory` (replacing the former
|
510 | use of `idbModules` with ES6 modules and a CFG module for the globals:
|
511 | see below)
|
512 | - Breaking change (minor): Change "eval" to "evaluate" in exception message
|
513 | for bad key from `keyPath`
|
514 | - Breaking change (minor): Remove unneeded `DOMError` methods
|
515 | - Breaking change (minor): As moved away from SQL offsets for `IDBCursor`
|
516 | retrieval, remove `__lastKeyContinued` property (we can use `__key`);
|
517 | also remove unused `__multiEntryOffset`
|
518 | - Deprecate: Numeric constants as second arguments to
|
519 | `IDBDatabase.prototype.transaction` (use `readonly`/`readwrite` instead).
|
520 | - Enhancement: Add config to allow user to override `escapeDatabaseName`
|
521 | function (and for convenience, `unescapeDatabaseName`) or to keep
|
522 | it but configure its new config subcomponents,
|
523 | `databaseCharacterBlacklist` and/or `databaseNameLengthLimit`
|
524 | (part of fix for #274)
|
525 | - Enhancement: Throw upon receiving bad config property in config methods
|
526 | - Enhancement: Allow initial config object to `setGlobalVars`
|
527 | (e.g., for setting an early `CFG.win` value)
|
528 | - Enhancement: Allow non-invasive browser build (inspired
|
529 | by @bolasblack's fork)
|
530 | - Enhancement: Add non-standard `webkitGetDatabaseNames` and test file (issue #223)
|
531 | - Enhancement: Allow `DEFAULT_DB_SIZE` to be set via `CFG.js`;
|
532 | - Enhancement: `IDBIndex` methods, `get`, `getKey`, `count` to allow obtaining
|
533 | first record of an `IDBKeyRange` (or `IDBKeyRange`-like range) and change
|
534 | error messages to indicate "key or range"
|
535 | - Enhancement: Support Node cleanly via `websql` SQLite3 library including
|
536 | customization of SQLite `busyTimeout`, `trace` and `profile`
|
537 | - Enhancement: Add `IDBObjectStore.openKeyCursor`
|
538 | - Enhancement: Add `IDBKeyRange.includes()` with test
|
539 | - Enhancement: Allow ranges to be passed to `IDBObjectStore.get` and
|
540 | `IDBObjectStore.delete()`
|
541 | - Enhancement: Allow key argument with `IDBCursor.continue`.
|
542 | - Enhancement: Key value retrieval: Allow "length" type key
|
543 | - Enhancement: Add ".sqlite" extension to database name for sake of (Windows)
|
544 | file type identification
|
545 | - Enhancement: Expose `__setConfig(prop, val)` method for setting pseudo-global
|
546 | property used internally for config and `shimIndexedDB.__getConfig()`
|
547 | to read
|
548 | - Enhancement: Expose `__setUnicodeIdentifiers()` for setting Unicode
|
549 | regular expression strings for full key path validation compliance (could
|
550 | slow loading/performance as depends on large regular expressions)
|
551 | - Enhancement: Implement `IDBTransaction.objectStoreNames`
|
552 | - Enhancement: Add `IDBObjectStore.name` and `IDBIndex.name` setters
|
553 | - Enhancement: Add various missing lesser event properties (`NONE`,
|
554 | `CAPTURING_PHASE`, `AT_TARGET`, `BUBBLING_PHASE`) and initialize readonly
|
555 | `target`, `currentTarget`, `defaultPrevented`, `isTrusted`.
|
556 | - Enhancement: Utilize `EventTarget` to invoke `dispatchEvent` to allow
|
557 | invocation of multiple listeners as by `addEventListener` (not
|
558 | yet treating bubbling or `preventDefault`); change `ShimEvent` to utilize
|
559 | polyfill from `eventtarget`
|
560 | - Enhancement: Expose `ShimDOMStringList` on `indexedDB.modules` for
|
561 | sake of tests (the former also renamed internally for interfaces
|
562 | testing); we may deprecate `indexedDB.modules` however, as
|
563 | `CFG.addNonIDBGlobals` is now allowing export
|
564 | - Enhancement: Add new `CFG` property, `addNonIDBGlobals`, to allow
|
565 | polyfilling non-IndexedDB interfaces used internally (and needed
|
566 | potentially for testing); `ShimDOMStringList`, `ShimDOMException`,
|
567 | `ShimEvent`, `ShimCustomEvent`, and `ShimEventTarget`
|
568 | - Enhancement: Add non-standard `sqlError` property to `DOMException`
|
569 | for facilitating debugging
|
570 | - Enhancement: Export `ShimCustomEvent` and `ShimEventTarget` shims we
|
571 | are using on `IDBFactory.modules` for sake of testing checks
|
572 | - Enhancement: Add `addSQLiteExtension` config to add ".sqlite" to user
|
573 | databases, taking it into account when throwing against any file
|
574 | length limits
|
575 | - Enhancement: Add `deleteDatabaseFiles` config to allow file itself to
|
576 | be deleted in Node; will throw `UnknownError` if there are any errors
|
577 | removing file (besides a missing file)
|
578 | - Enhancement: Make addition of `.sqlite` extension to `__sysdb__` conditional
|
579 | on `CFG.addSQLiteExtension` setting
|
580 | - Enhancement: Support `autoName` config to interpret empty string name as a
|
581 | cue for creating a database name automatically (introspect on
|
582 | `IDBDatabase.name` to get the actual name used) (untested)
|
583 | - Enhancement: Support `memoryDatabase` config to cause all opening, deleting,
|
584 | and listing to be of SQLite in-memory databases (for Node); name supplied
|
585 | by user is still used (including to automatically build a cache since
|
586 | SQLite does not allow naming of in-memory databases); the name is also
|
587 | accessible to `IDBFactory.webkitGetDatabaseNames()`; causes database
|
588 | name/version tracking to also be within an in-memory database; part of
|
589 | #278 (untested); builds on work by @ThomasGreiner)
|
590 | - Enhancement: Support `cacheDatabaseInstances` config to ensure that any
|
591 | repeat `IDBFactory.open` call to the same name and version (assuming
|
592 | no deletes or aborts causing rollbacks) will reuse the same SQLite
|
593 | `openDatabase` instance
|
594 | - Enhancement: Add `useSQLiteIndexes` option to add (and drop) SQLite
|
595 | indexes where utilized (#210)
|
596 | - Enhancement: Provide `avoidAutoShim` option (#270)
|
597 | - Enhancement: Provide `shimIndexedDB.__setConnectionQueueOrigin()` utility
|
598 | - Add missing API: Add `IDBCursor.continuePrimaryKey`
|
599 | - Add missing API: Implement `IDBObjectStore.getKey`
|
600 | - Add missing APIs: Implement `IDBIndex.getAll/getAllKeys`
|
601 | - Add missing APIs: Implement `IDBObjectStore.getAll`,
|
602 | `IDBObjectStore.getAllKeys`
|
603 | - Add missing API: Binary keys
|
604 | - Add missing API: `versionchange` and `blocked` events (currently assumes
|
605 | single process)
|
606 | - Fix: Ensure `IDBKeyRange`'s `lower` and `upper` get round-tripped
|
607 | key-encoded (e.g., to ensure a `DataView` gets converted into
|
608 | an `ArrayBuffer`)
|
609 | - Fix: Avoid `continue` errors upon multiEntry checks with open-ended ranges
|
610 | - Fix: Ensure `deleteDatabase` SQLite execution errors (not only
|
611 | its transaction errors) are properly surfaced (probably shouldn't
|
612 | occur once we implement blocking transactions anyways, but
|
613 | should resolve in case such errors may occur)
|
614 | - Fix: Add error codes on `DOMException`'s for sake of
|
615 | web-platform-tests' testharness.js even though new spec does not
|
616 | list the codes and `code` is listed on MDN as no longer being set
|
617 | on new exceptions
|
618 | - Fix: Ensure `AbortError` sent to `IDBOpenDBRequest.onerror` upon a
|
619 | transaction aborting or a connection being closed within an upgrade
|
620 | transaction
|
621 | - Fix: Set `IDBOpenDBRequest.transaction` to `null` upon `AbortError` due to
|
622 | closed connection
|
623 | - Fix: Set `error` property of `IDBTransaction` for certain tx aborts
|
624 | - Fix: 'error' and 'abort' bubbling events
|
625 | ((`IDBRequest`->) `IDBTransaction`->`IDBDatabase`),
|
626 | including reuse of same event object upon propagation and potential
|
627 | for cancellation as appropriate; used within `IDBTransaction` and
|
628 | potentially within `IDBFactory`
|
629 | - Fix: Set `readyState` to "done", `result` to `undefined`, and `error`
|
630 | to a new `AbortError` on each request when aborting a transaction
|
631 | - Fix: Set transaction active flag on while dispatching success/error
|
632 | events
|
633 | - Fix: Abort transaction upon request "success" handler throwing or
|
634 | "error" handler throwing or "error" event not being prevented
|
635 | - Fix: Trigger queue of "error"-type events on all unfinished
|
636 | requests during transaction abort (then "abort" type event on
|
637 | transaction)
|
638 | - Fix: Avoid adding `DOMException` class when error not found (should
|
639 | not occur?)
|
640 | - Fix (minor): Avoid defaulting to `DOMException` class for error
|
641 | instances in `IDBFactory`
|
642 | - Fix: Unknown problems creating/deleting object stores or indexes
|
643 | should have `UnknownError` `DOMException` name (and fail through events)
|
644 | - Fix: Report `ConstraintError` if attempting to add a unique index when
|
645 | existing values are not unique
|
646 | - Fix: Ensure IndexedDB `DOMException` is returned for `IDBFactory`
|
647 | method errors instead of WebSQL errors
|
648 | - Fix: Use `AbortError` as `IDBTransaction.error` property when
|
649 | "error" handler throws
|
650 | - Fix: If transaction already aborted, avoid potential for
|
651 | request errors firing
|
652 | - Fix: If transaction already aborted, avoid running further
|
653 | request callbacks or success/error events
|
654 | - Fix: Throw for `IDBRequest` or `IDBOpenDBRequest` with `result`
|
655 | and `error` getters if request not yet done
|
656 | - Fix: Ensure `IDBOpenDBRequest` `result` is set to `undefined` upon
|
657 | erring
|
658 | - Fix: Ensure `IDBOpenDBRequest` `transaction` is set to `null` upon
|
659 | completing or aborting
|
660 | - Fix: Add duck-typing `instanceof` mechanism for `ShimEvent`
|
661 | - Fix: Change type to "abort" for transaction abort events
|
662 | - Fix: Set `readyState` for successful `IDBFactory.deleteDatabase`
|
663 | and `IDBFactory.webkitGetDatabaseNames`
|
664 | - Fix: If calling `deleteDatabase` on non-existing database,
|
665 | ensure `oldVersion` is 0 (not `null`)
|
666 | - Fix: Set `readyState` to 'pending' for `IDBCursor` `continue`/`advance`
|
667 | - Fix: Avoid adding requests with success events for
|
668 | `createObjectStore`/`deleteObjectStore`/`createIndex`/`deleteIndex`
|
669 | and store/index renaming
|
670 | - Fix: Avoid firing multiple `success` events with `IDBFactory.open`
|
671 | - Fix: Return appropriate IndexedDB error object instead of WebSQL error
|
672 | object; fixes #27
|
673 | - Fix: For `IDBCursor`, move from SQL offsets to utilization of last key as
|
674 | per spec (and as needed for discovering any db modifications)
|
675 | - Fix: In conjunction with `IDBCursor` `continue` and `advance` caching,
|
676 | trigger cache resets/changes (for `IDBCursor`: `delete`, `update`
|
677 | and for `IDBObjectStore`: `add`, `put`, `delete`, `clear`);
|
678 | - Fix: Cause `IDBCursor.advance` to properly handle unique values (and also
|
679 | take advantage of caching)
|
680 | - Fix: `IDBCursor` key-based `continue` to be direction-sensitive
|
681 | - Fix: `IDBCursor` request source should be store or index, not cursor
|
682 | - Fix: stores cursor
|
683 | - Fix: Avoid `cursor.update` always getting next key
|
684 | - (Fix: Avoid storing cursor (for `IDBObjectStore.count`) if will be no cache)
|
685 | - Fix: In Safari, default DEFAULT_DB_SIZE to a higher value
|
686 | (25 * 1024 * 1024); fixes #115
|
687 | - Fix: Properly implement and utilize `IDBCursorWithValue`
|
688 | - Fix: Use latest draft spec's (and implementations') use of `DOMException`
|
689 | instead of `DOMError`
|
690 | - Fix: Replace `instanceof` checks with `Array.isArray()` for arrays and
|
691 | with duck-typing otherwise (for reliability with cross-window/module data)
|
692 | - Fix: For `advance`/`continue`, throw if the cursor source or effective
|
693 | object store has been deleted
|
694 | - Fix: Ensure will throw when "got value flag" is unset during call to
|
695 | `continue` or `advance`
|
696 | - Fix: Ensure "prev" cursor will iterate in descending order on primary key
|
697 | (sort by keyPath-indicated value then primary key)
|
698 | - Fix: Allow empty string keyPath for index to return value as is (for
|
699 | handling non-object values as keys)
|
700 | - Fix: For `IDBCursor.advance`, better range enforcement
|
701 | - Fix: Ensure the error thrown for a count `<=0` to `advance()` is a genuine
|
702 | `TypeError`
|
703 | - Fix: Ensure other bad counts passed to `advance()` (non-numbers or non-finite
|
704 | numbers) throw `TypeError` as per W3C tests (even though the spec is
|
705 | silent on bad counts except for count=0)
|
706 | - Fix: Add transaction to `IDBCursor` request
|
707 | - Fix: Update keyRange behavior and tests to reflect draft spec
|
708 | - Fix: Allow `__versionTransaction` not to exist (if user calling it wrong)
|
709 | for `create/deleteObjectStore` and test it so it will return an
|
710 | `InvalidStateError`
|
711 | - Fix: Avoid `LIKE` check on auto-increment sequence check (could be store
|
712 | name inside another store name);
|
713 | - Fix: Ensure numeric keys passed to `add()` or `put()` on an auto-increment
|
714 | store which are greater or equal to the "current number" will update
|
715 | the auto-increment counter
|
716 | - Fix: Ensure a keyPath added numeric auto-increment key will update the
|
717 | auto-increment counter
|
718 | - Fix: Avoid potential problem with data insertion if an index were named "key"
|
719 | - Fix: Throw `TypeError` on `IDBKeyRange` methods with inadequate
|
720 | arguments and `DataError`-type `DOMException` with explicit
|
721 | `undefined`
|
722 | - Fix: If `lower` is greater than the `upper` argument to `IDBKeyRange.bound`,
|
723 | throw a `DataError`
|
724 | - Fix: Throw `DataError` upon continuing the cursor in an unexpected direction
|
725 | - Fix: Key validation: Avoid circular arrays
|
726 | - Fix: Key validation: Disallow Dates with NaN as \[\[DateValue]]
|
727 | - Fix: Ensure validation occurs for indexes before storage
|
728 | - Fix: Implement `IDBVersionChangeEvent` properly and utilize to allow
|
729 | `instanceof` checks
|
730 | - Fix: Sort properly for next/prev(unique) (potentially by key,
|
731 | primary key, (position,) obj. store position)
|
732 | - Fix: Be safe in quoting "key" column (reserved SQLite word)
|
733 | - Fix: For all public methods, seek to ensure error checking occurs in
|
734 | spec order and add missing checks
|
735 | - Fix: Throw for `IDBCursor.update/delete` if transaction not active,
|
736 | if source or effective object store deleted, if got value not set,
|
737 | or if a key method has been invoked
|
738 | - Fix: Throw `DataCloneError` if `IDBCursor.update` value is not
|
739 | clonable by the Structured Cloning Algorithm
|
740 | - Fix: Improve structured cloning checking by using cyclonejs (not
|
741 | currently used for cloning though could be used elsewhere where
|
742 | not needed to be encoded); also avoid use of JSON.stringify
|
743 | which only works on a subset of SCA
|
744 | - Fix: Throw `TypeError` if call to `update()` has no arguments
|
745 | - Fix: Allow empty string key path to be utilized when validating
|
746 | `add`/`put` input
|
747 | - Fix: Avoid iterating duplicate key values for unique iterations
|
748 | - Fix: Ensure `IDBRequest.error` returns `null` rather than `undefined` upon
|
749 | success event
|
750 | - Fix: Readonly
|
751 | - Make `indexedDB` readonly
|
752 | - Make `IDBCursor` properties, `key`, `primaryKey`, `direction`,
|
753 | `source`, `value` readonly
|
754 | - Make `IDBRequest` properties (`result`, `error`, `source`,
|
755 | `transaction`, `readyState`) readonly
|
756 | - Make `IDBDatabase` properties, `name`, `version`, and
|
757 | `objectStoreNames` readonly
|
758 | - Make `IDBKeyRange` properties, `lower`, `upper`, `lowerOpen`, and
|
759 | `upperOpen` readonly, renaming cached range attributes
|
760 | - Make `IDBTransaction` properties, `objectStoreNames`, `mode`, `db`,
|
761 | and `error` readonly
|
762 | - Make `IDBIndex` properties, `objectStore`, `keyPath`, `multiEntry`,
|
763 | `unique` readonly
|
764 | - Make `IDBObjectStore` properties, `keyPath`, `indexNames`,
|
765 | `transaction`, `autoIncrement` readonly
|
766 | - Ensure `keyPath` does not return same instance as passed in (if
|
767 | an array)
|
768 | - Make `ShimEvent` properties, `type`, `bubbles`, `cancelable`,
|
769 | `eventPhase`, `timeStamp` readonly (and for native events, stop
|
770 | making `target` writable)
|
771 | - Fix: Ensure `IDBIndex` properties, `multiEntry`, `unique` are always boolean
|
772 | - Fix: Ensure an `IDBTransaction.objectStore` call always returns the
|
773 | same instance if for the same transaction
|
774 | - Fix: For `IDBTransaction.abort()`, throw `InvalidStateError` if
|
775 | transaction not active
|
776 | - Fix: Ensure `IDBIndex` retrieval methods throw upon index or store being
|
777 | deleted, upon transaction inactive
|
778 | - Fix: Allow `IDBIndex.count` to pass `null` as key
|
779 | - Fix: Throw if not in versionchange transaction when calling
|
780 | `IDBDatabase.transaction`
|
781 | - Fix: Ensure `DOMException` variant of `SyntaxError` is thrown for
|
782 | bad key paths
|
783 | - Fix: Handle (mistaken) arguments > 2 to `IDBFactory.open()`
|
784 | - Fix: In `IDBObjectStore` methods, throw upon transaction inactive;
|
785 | fix checking error
|
786 | - Fix: In `IDBObjectStore.count`, allow `null` (as with `undefined`) to
|
787 | indicate unbounded range
|
788 | - Fix: Correct `IDBRequest.source` to reflect `IDBCursor`, `IDBIndex`,
|
789 | or `IDBObjectStore` as appropriate
|
790 | - Fix: Prevent race condition error if attempting to find indexes during
|
791 | insertion when index creation has begun but not yet completed
|
792 | - Fix: Validate keyPath supplied to `createObjectStore`
|
793 | - Fix: Allow for empty string keyPath to `createObjectStore`
|
794 | - Fix: Clone options object passed to `createObjectStore`
|
795 | - Fix: Overcome lone surrogate limitation in
|
796 | node-sqlite3/Python (see <http://bugs.python.org/issue12569> and
|
797 | <http://stackoverflow.com/a/6701665/271577>)
|
798 | - Fix: For `createObjectStore`, throw if transaction is not active, or
|
799 | if auto-increment with empty string or array key path
|
800 | - Fix: Ensure `__versionTransaction` set to `null` and set before `oncomplete`
|
801 | so that `versionchange` checks inside `e.target.transaction.oncomplete`
|
802 | within `onupgradeneeded` or inside `onsuccess` will fail (and thus will
|
803 | attempts to create or delete object stores)
|
804 | - Fix: Throw InvalidStateError if store deleted (for `IDBObjectStore`
|
805 | methods: `add`, `put`, `get`, `delete`, `clear`, `count`, `openCursor`,
|
806 | `openKeyCursor`, `index`, `createIndex`, `deleteeIndex`)
|
807 | - Fix: For `IDBObjectStore.deleteIndex`, throw if not in upgrade
|
808 | transaction or if transaction is inactive
|
809 | - Fix: For `IDBObjectStore.createIndex`, throw `SyntaxError` if not a
|
810 | valid keyPath given
|
811 | - Fix: For `IDBObjectStore.createIndex`, throw if transaction not active
|
812 | - Fix: Apply `toString()` (and convert from sparse to dense) for
|
813 | validation and utilization within key path arrays
|
814 | - Fix: Validate `IDBKeyRange`-like objects (e.g., passed to cursor methods)
|
815 | - Fix: Properly ensure with multiEntry conversions that array members which
|
816 | fail validation as keys are ignored (and avoid adding duplicate members
|
817 | - Fix: Ensure `success` event does not fire if database has already been
|
818 | closed (in `upgradeneeded`)
|
819 | - Fix: Make `length` on `DOMStringList` non-enumerable (impacts W3C tests
|
820 | and also how implemented in Chrome)
|
821 | - Fix: Error checking for `DOMStringList` methods
|
822 | - Fix: Prevent non-numeric and `<= 1` keys from auto-incrementing current number
|
823 | - Fix: For generators, as per new requirements, ensure numbers
|
824 | higher than the max (including non-finite) have the effect of
|
825 | setting the current number to the max
|
826 | - Fix: For generators, handle numbers just beyond the max allowed by
|
827 | ES since confusable if only incrementing by one
|
828 | - Fix: Default to `global` for IDB exports where no `window` or `self` is defined
|
829 | - Fix: Prevent incrementing if nevertheless valid key is lower than current
|
830 | number
|
831 | - Fix: Ensure sorting of `StringList` (for `IDBDatabase.objectStoreNames`,
|
832 | `IDBObjectStore.indexNames`)
|
833 | - Fix: Escape upper-case letters as table/column names case-insensitive in
|
834 | SQLite, but db/store/index names not case-insensitive in IndexedDB
|
835 | - Fix: Add default option `escapeNFDForDatabaseNames` to
|
836 | escape characters that expand on NFD normalization so as to avoid
|
837 | accidental loss of precise Unicode code points and thus potential name
|
838 | clashes on the Mac which does NFD normalization on the file system (user
|
839 | should normalize themselves if they want normalization); part of #278
|
840 | - Fix: Stringify calls to `IDBDatabase.createObjectStore` and
|
841 | `IDBObjectstore.createIndex` as per W3C tests
|
842 | - Fix: Avoid setting `source` for `open` request, as, per new spec, it is
|
843 | to always be `null`
|
844 | - Fix: Ensure cloning value before as well as after key evaluated (otherwise,
|
845 | original object will be modified)
|
846 | - Fix: Check for array on range within multiEntry cursor iteration; fixes
|
847 | issue #222
|
848 | - Fix: Copy SQLite row `item` object properties (for Safari); fixes issue #261
|
849 | - Fix: Genuinely rollback version in Node
|
850 | - Wrap all possible `openDatabase` operations, including version changes
|
851 | into an effectively single transaction;
|
852 | - Revert `IDBDatabase` `version` and `objectStoreNames`; `IDBObjectStore`
|
853 | `name` and `indexNames`; `IDBTransaction` `objectStoreNames`, and
|
854 | `IDBIndex` `name` properties after aborted transactions;
|
855 | - Allow `dbVersions` table insert to be undone in one transaction
|
856 | (also avoids second query);
|
857 | - If connection closed or errs, rollback; otherwise, commit only after
|
858 | transaction finished;
|
859 | - Reimplement `deleteDatabase` to delete from `dbVersions` first and
|
860 | rollback everything if there is a failure
|
861 | - Fix: In browser, only version can be consistently rolled back since we
|
862 | can't extend WebSQL transaction expiration (and thus force an error to
|
863 | get auto-rollback given that ROLLBACK is not supported)
|
864 | - Fix: Destroy index entries from index set upon store deletion and
|
865 | still allow recreation of store handles (but not removing whole
|
866 | clone record, allowing its properties to still be examined)
|
867 | - Fix: Ensure `createObjectStore`/`createIndex` return same handles as
|
868 | `objectStore`/`index` methods
|
869 | - Fix: Avoid resetting store name if the store already existed before an
|
870 | upgrade transaction (per W3C test `idbobjectstore-rename-abort.html`)
|
871 | - Fix: Ensure `IDBTransaction.objectStoreNames` is always a `DOMStringList`
|
872 | even when user supplies arrays
|
873 | - Fix: As per spec, `DELETE` then `INSERT` rather than `UPDATE` for
|
874 | `IDBCursor.update`
|
875 | - Fix: Add support for new "closed" event via a custom
|
876 | `IDBFactory.__forceClose()` method (untested)
|
877 | - Fix: Do not set got value flag if end of iteration (and also avoid
|
878 | setting irrelevant got value flag on count cursors)
|
879 | - Fix: Closing the database in an upgrade transaction should not
|
880 | prevent execution of the `oncomplete` handler (though an `AbortError`
|
881 | will subsequently occur)
|
882 | - Fix: Allow `IDBFactory.open()` to accept explicit `undefined` version
|
883 | - Fix: Round down version in `IDBFactory.open()`
|
884 | - Fix: Ensure store names passed into `IDBDatabase.transaction` are stored
|
885 | as unique names and are sorted
|
886 | - Fix: Add `Symbol.toStringTag` (or `toString`) to `IDB*` classes for proper
|
887 | `Object.prototype.toString.call`-type invocations checked in
|
888 | W3C interface tests)
|
889 | - Fix: Throw precise and better ordered exceptions upon
|
890 | non-strings or non-iterable objects or non-string sequences being
|
891 | supplied as `storeNames` argument to `IDBDatabase.transaction` (as
|
892 | should occur per WebIDL when converting to a
|
893 | "DOMString or sequence\<DOMString\>");
|
894 | see <https://heycam.github.io/webidl/#es-sequence>
|
895 | - Fix: Add iterator to `DOMStringList` as it should be convertable
|
896 | to sequence\<DOMStringList\> per
|
897 | <https://html.spec.whatwg.org/multipage/infrastructure.html#domstringlist>
|
898 | and <https://infra.spec.whatwg.org/#list-iterate>
|
899 | - Fix: Make `DOMStringList` non-enumerable but configurable
|
900 | - Fix: Interface changes for `DOMStringList`: illegal constructor, length
|
901 | enumerable, `instanceof` override
|
902 | - Fix: WebIDL-based changes, including:
|
903 | 1) new `CFG` option `fullIDLSupport` to avoid expensive
|
904 | `setPrototypeOf` by default;
|
905 | 2) Illegal constructor and `prototype` invocation (while allowing
|
906 | normal access)
|
907 | 3) Make `prototype` non-writable as appropriate
|
908 | 4) Ensure `constructor` set on `prototype` as appropriate
|
909 | 5) Proper `Symbol.toStringTag` and `toString` exposure on
|
910 | classes and prototypes
|
911 | 6) Use `arguments` object in place of some function parameters
|
912 | to get proper function lengths
|
913 | 7) Set properties to appropriate `enumerable`/`configurable`
|
914 | 8) Set proper inheritance hierarchy, including to `EventTarget` or
|
915 | `Event`
|
916 | - Fix: Properly report global shimming errors when setting a readonly
|
917 | failed and `Object.defineProperty` is not present
|
918 | - Fix: As per spec, check whether transaction is finished for
|
919 | `IDBDatabase` (`createObjectStore`, `deleteObjectStore`),
|
920 | `IDBObjectStore.index`, `IDBTransaction` (`objectStore`, `abort`),
|
921 | and not merely whether it is active
|
922 | - Fix: Improve evaluate key path splitting of identifier algorithm
|
923 | - Fix: Ensure extraction of key value from value using key path algorithm
|
924 | is applied during ignoring of bad indexes of storage and during
|
925 | checks for storing operations
|
926 | - Fix: Better `IDBIndex` (`openCursor`, `openKeyCursor`, `count`,
|
927 | `get*`) range validation
|
928 | - Fix: Disallow invocation of `webkitGetDatabaseNames` on
|
929 | `IDBFactory.prototype`
|
930 | - Fix: Throw synchronously if won't be able to inject into a value (thereby
|
931 | avoiding the need to check during the injection); assumes
|
932 | PR https://github.com/w3c/IndexedDB/pull/146
|
933 | - Fix: Make `DataError` message more accurate for cursor key path
|
934 | resolution failures
|
935 | - Fix: Ensure non-numeric/non-finite or `< 1` keys can be stored as
|
936 | per spec even though not changing the current number
|
937 | - Fix: Allow iterables where `sequence<DOMString>` is accepted
|
938 | (`IDBDatabase.createObjectStore`, `IDBObjectStore.createIndex`,
|
939 | `IDBDatabase.transaction`)
|
940 | - Fix: Avoid modifying the supplied `createObjectStore` `createOptions`
|
941 | object when `keyPath` is `undefined`
|
942 | - Fix: For `IDBDatabase.transaction`, allow `ToString` to occur on
|
943 | iterables
|
944 | - Fix: Tighten up `DOMException` shim to support legacy constants per
|
945 | W3C tests and better follow W3C interface expectations
|
946 | - Fix: Improve precision of `util.isFile` and have
|
947 | `util.isBlob` fail with files but support non-file Blobs
|
948 | - Fix: Clone before checking against key path (`IDBObjectStore`
|
949 | (`put`, `add`) and `IDBCursor.update`)
|
950 | - Fix: Avoid `eval()` in cloning (issue #211, #236)
|
951 | - Fix: Support cyclic values via typeson/typeson-registry (#267)
|
952 | - Fix: Distinguish deleted and pending deleted stores and indexes;
|
953 | for insertion operations, do index checks independent of
|
954 | `indexNames` in case subsequently deleted by `deleteIndex` (#276)
|
955 | - Fix: Ensure same index instance object returned for same store object and
|
956 | index name
|
957 | - Fix: Better error reporting for `IDBRequest.error` or `IDBRequest.result`
|
958 | errors.
|
959 | - Fix: Throw `InvalidStateError` `DOMException` upon deleted object store or index for:
|
960 | 1. cursor-related operations
|
961 | 1. index and store name setters
|
962 | 1. index and store get or manipulation operations
|
963 | 1. index creation, deletion, or retrieval operations
|
964 | - Fix: Ensure will throw `InvalidStateError` `DOMException` as with deleted
|
965 | object stores or indexes for access after an aborted transaction when
|
966 | there were pending object stores or indexes to be created
|
967 | - Fix: Cause not finished assertions to fire even if at beginning of abort except for
|
968 | `IDBDatabase` `createObjectStore`/`deleteObjectStore` which per corrected
|
969 | spec throw different error upon (incompletely) finished check
|
970 | - Fix `IDBDatabase.createObjectStore` exception order fix (object store
|
971 | `ConstraintError` check follows key path `SyntaxError` check)
|
972 | - Fix `IDBDatabase.transaction` exception order fixes (`InvalidAccessError`
|
973 | follows `InvalidStateError` version change check, `InvalidStateError`
|
974 | closed check, and `NotFoundError` object store check); `TypeError` mode
|
975 | check per newly corrected spec behavior, to follow all other exception
|
976 | checks
|
977 | - Fix: Close connection on abort (setting closed flag)
|
978 | - Fix: Have `deleteDatabase` empty relevant `connections` (relevant
|
979 | for `__forceClose` as well as `open`)
|
980 | - Fix: Change `VARCHAR(255)` to `BLOB` for database and store name
|
981 | fields as may be longer (for db names, if
|
982 | `databaseNameLengthLimit` is higher than default)
|
983 | - Fix: Upon upgrade transaction abort, attempt to clean up other resources
|
984 | (remove memory database or remove/empty database file if no prior versions)
|
985 | - Fix: Ensure escaping of unmatched surrogates occurs in all SQLite statements
|
986 | as needed by Chrome (but not Node) (noted in failed dropping of tables)
|
987 | - Fix: Revert current number if operation fails (even if not aborting)
|
988 | - Fix: Avoid reporting abort errors on duplicates of same request in
|
989 | transaction queue (ensures subsequent unsetting of cursor request done
|
990 | flag does not return additional error results in an abort error)
|
991 | - Repo files: Rename test folders for ease in distinguishing
|
992 | - Optimize: Only retrieve required SQLite columns
|
993 | - Optimize: Have `IDBObjectStore` and `IDBIndex`'s `get` and
|
994 | `getKey` only retrieve one record from SQLite
|
995 | - Optimize: use WebSQL `readTransaction` as possible/when in `readonly` mode
|
996 | - Optimize: Run SELECT only on columns we need
|
997 | - Optimize: Avoid caching and other processing in `IDBCursor` multiEntry
|
998 | finds (used by `IDBObjectStore` or `IDBIndex` `count` with key range)
|
999 | - Optimize: Switch to `SyncPromise` for faster execution
|
1000 | - Optimize: Avoid redundant key->value checks and redundant cloning
|
1001 | - Optimize: Avoid cloning key when already a primitive
|
1002 | - Refactoring: Replace Node-deprecated `GLOBAL` with `global`
|
1003 | - Refactoring: Rename internal escaping/unescaping functions to semantic
|
1004 | names and add further documentation
|
1005 | - Refactoring (Avoid globals): Change from using window global to a CFG module
|
1006 | for better maintainability
|
1007 | - Refactoring (Avoid deprecated): Avoid deprecated `unescape`
|
1008 | - Refactoring (ES6): Add Babel with ES6 module support for imports and add
|
1009 | to ESLint
|
1010 | - Refactoring (ES6): Move to ES6 modules with babel/browserify (for
|
1011 | immediately clear semantics and cruft removal), removing 'use strict'
|
1012 | (redundant for modules) and remove build.js
|
1013 | - Refactoring (ES6): Use `const` where possible, and `let` otherwise and
|
1014 | add as ESLint rules, other minor changes
|
1015 | - Refactoring (ESLint): Move from JSHint to ESLint and to "standard" config,
|
1016 | with a few exceptions
|
1017 | - Refactoring (spec parity): Use same naming/return of methods in spec
|
1018 | - Refactoring (spec parity): Implement `convertKeyToValue` (not in use internally)
|
1019 | - Refactoring (spec parity): Extract steps for storing a record (affecting
|
1020 | `IDBCursor.update` and `IDBObjectStore`'s `put`/`add`)
|
1021 | - Refactoring (spec parity): Perform auto-increment in spec order (should be of
|
1022 | no consequence to the user, however)
|
1023 | - Refactoring (spec parity): Rename `Key.getValue` to `Key.evaluateKeyPathOnValue`
|
1024 | - Refactoring (spec parity): Rename and repurpose `Key.validate` to
|
1025 | `Key.convertValueToKey` (also paralleling terminology in the spec),
|
1026 | also supporting multiEntry argument
|
1027 | - Refactoring (spec parity): Make current number retrieval routines more closely
|
1028 | parallel spec
|
1029 | - Refactoring (spec parity): Mirror recent minor spec changes re:
|
1030 | bubbling/cancelable `IDBFactory` error events
|
1031 | - Refactoring (SQL): Quoting columns consistently for SQLite
|
1032 | - Refactoring (SQL): Make SQL-relationship clearer for method names (escaping)
|
1033 | - Refactoring (SQL): upper-case SQL keywords for greater visual distinction
|
1034 | - Refactoring: Where safe, switch from `typeof ... === 'undefined'` to
|
1035 | check against undefined (safe for strict mode implicit in modules)
|
1036 | - Refactoring: Use spread operator in place of `arguments` where named
|
1037 | args not needed (also may be more future-proof)
|
1038 | - Refactoring: Have `setSQLForRange` handle key encoding
|
1039 | - Refactoring: `isObj` utility, further use of `Array.isArray()`
|
1040 | - Refactoring: Key value retrieval: Avoid `eval()` (#211, #236)
|
1041 | - Refactoring: Use ES6 classes for cleaner inheritance
|
1042 | - Refactoring: Avoid JSON methods upon each `objectStore`/`createObjectStore`
|
1043 | call in favor of one-time in `IDBDatabase`
|
1044 | - Refactoring: Replace SQLite auto-increment with our own table since
|
1045 | SQLite's own apparently cannot be decremented successfully;
|
1046 | also rename to spec "current number"
|
1047 | - Refactoring: Avoid using native events, as we need to let `EventTarget`
|
1048 | alter its readonly `target`, `currentTarget`, etc. properties
|
1049 | - Refactoring: Throw count 0 error differently from negative count in
|
1050 | `IDBCursor.advance`
|
1051 | - Refactoring: Put `DOMStringList` and `IDBVersionChangeEvent` into own
|
1052 | files
|
1053 | - Updating: Bump various `devDependency` min versions
|
1054 | - Docs: List known issues on README
|
1055 | - Docs: Notice on deprecation for transaction mode constants
|
1056 | - Docs: Update summarization of npm testing info
|
1057 | - Docs: Distinguish `dependencies`/`devDependencies` display on README
|
1058 | - npm: Update packages
|
1059 | - Testing: Update tests per current spec and behavior
|
1060 | - Testing: Ensure db closes after each test to allow non-blocking `open()`
|
1061 | (was affecting testing)
|
1062 | - Testing: Work on Node tests and for Firefox (including increasing timeouts
|
1063 | as needed)
|
1064 | - Testing: Rely on `node_modules` paths for testing framework files
|
1065 | - Testing (browser index): Update links to test cases
|
1066 | - Testing (ESLint): Add compat plugin for browser feature testing
|
1067 | - Testing (fakeIndexedDB.js): Comment out non-standard property checks
|
1068 | - Testing (mock): Update IndexedDBMock tests
|
1069 | - Testing (mock): Expect `InvalidStateError` instead of `ConstraintError`
|
1070 | when not in an upgrade transaction calling `createObjectStore`
|
1071 | - Testing (mock): Fix for `blocked` event's expected `newVersion` (submitted
|
1072 | fix as <https://github.com/kristofdegrave/indexedDBmock/pull/2>)
|
1073 | - Testing (W3C Old): Fix global
|
1074 | - Testing (W3C Old): Bump timeout for browser key validity tests
|
1075 | - Testing (W3C Old): `IDBFactory.open` tests to do more flexible
|
1076 | `instanceof` checks;
|
1077 | - Testing (W3C Old): Fix test to reflect latest draft spec -- see <https://github.com/brettz9/web-platform-tests/pull/1>
|
1078 | - Testing (W3C Old): Cause recursive value test not to be skipped
|
1079 | - Testing (W3C Old): Change example to expect `ConstraintError` (since object
|
1080 | store already existing per test)--though perhaps should ensure it is
|
1081 | not yet existing
|
1082 | - Testing (W3C Old): Ensure `DOMException` variant of `SyntaxError` is checked
|
1083 | - Testing (W3C Old): Increase timeout for Node testing `createObjectStore`'s
|
1084 | `IDBObjectStoreParameters` test and IDBCursorBehavior's
|
1085 | `IDBCursor.direction`
|
1086 | - Testing (W3C Old): Utilize Unicode in `KeyPath.js` test
|
1087 | - Testing (W3C Old): Update w3c-old to work with browser
|
1088 | - Testing (W3C Old): Fix a few globals, increase test timeouts for
|
1089 | browser, allow array-like properties as per original tests
|
1090 | - Testing (W3C Old): Update tests per latest behavior as far as throwing
|
1091 | `InvalidStateError` for deleted object stores or indexes
|
1092 | - Test scaffolding (W3C Old): Fix args to `initionalSituation()`
|
1093 | - Test scaffolding (W3C Old): Fix test ok condition, typo
|
1094 | - Test scaffolding (W3C Old): Fix assertions
|
1095 | - Testing (W3C): Add new preliminary testing framework (mostly complete)
|
1096 | - Testing (W3C): Add separate tests for events and workers; also
|
1097 | incorporate tests for `DOMStringList` and `DOMException`
|
1098 | - Testing (W3C Old): Fix `DOMStringList` API usage (failing on Safari)
|
1099 | - Testing (W3C Old): Partly update `TransactionBehavior.js` tests to
|
1100 | ensure `objectStoreNames` are compared as arrays
|
1101 | - (Testing)
|
1102 | (Unless stated otherwise, "Browser" below refers to Safari 10.1 and
|
1103 | Chrome 57.0.2987.133 (64-bit); note that both browsers (especially
|
1104 | Safari may require re-running tests or running the tests as individual
|
1105 | groups)
|
1106 |
|
1107 | From tests-qunit (Node and browser), all tests are now passing.
|
1108 |
|
1109 | From tests-mocha (Node), all tests are now passing.
|
1110 | From tests-mocha (Browser), all tests are now passing except:
|
1111 | 1. in Chrome: `IDBFactory.cmp` `simple keys->should compare two numbers` due to an apparent `Number.MIN_VALUE` problem as [described here](http://stackoverflow.com/questions/43305403/number-min-value-and-tostring).
|
1112 | (Note: This is no longer occurring at least as of Chrome 69.)
|
1113 |
|
1114 | From fakeIndexedDB (Node), all tests now passing.
|
1115 | From fakeIndexedDB (Browser), only the first test is
|
1116 | passing (as expected due to rollback limitations);
|
1117 |
|
1118 | From indexedDBmock (Node and browser), all tests are now passing.
|
1119 | (see <https://github.com/kristofdegrave/indexedDBmock/compare/f6cdf451769827e13c746984b820096b0de3ac6d...master>
|
1120 | for any new changes to add to tests).
|
1121 |
|
1122 | From old W3C (Node and browser), all tests are now passing.
|
1123 |
|
1124 | From new W3C (Node):
|
1125 | See [`/test-support/node-good-bad-files.js`](test-support/node-good-bad-files.js)
|
1126 | for the current test status on these tests.
|
1127 |
|
1128 | From new W3C (Browser):
|
1129 | Individual tests can be run as per [TESTING](docs/TESTING.md).
|
1130 | See [node-good-bad-files.js](test-support/node-good-bad-files.js)
|
1131 | for the current test status on these tests.
|
1132 |
|
1133 | - Testing (Grunt): Force ESLint (since "standard" currently causing a warning)
|
1134 | - Testing (Grunt): More granular uglification, add build-browser,
|
1135 | dev-browser, Unicode watching
|
1136 | - Testing (Grunt): Add Node-specific, Unicode-specific build/dev commands
|
1137 | - Testing (Grunt): Clarify Grunt tasks, expand tasks for cleaning, make tests
|
1138 | more granular
|
1139 | - Testing (Grunt): Remove now redundant `sourceMappingURL`, use
|
1140 | `sourceMapName` per current specs
|
1141 | - Testing (Grunt): Add `uglify` to grunt watch task
|
1142 | - Testing (Grunt): Allow use of own sauce access key
|
1143 | - Testing (Grunt): Add task to avoid Saucelabs when running PhantomJS
|
1144 | - Testing (Grunt): Add assorted testing tasks
|
1145 | - Testing (Grunt): Update grunt-node-qunit to support latest QUnit
|
1146 | - Testing (Grunt): Get Saucelabs working (for Chrome and most of Firefox)
|
1147 | - Testing (Grunt): Log Saucelabs results
|
1148 | - Testing (Grunt): Work toward fixing source maps
|
1149 | - Testing (Grunt): Avoid missing grunt-cli message
|
1150 | - Testing (PhantomJS): Deal with PhantomJS error
|
1151 | - Testing (npm): Streamline test names; add convenience scripts
|
1152 | - Testing (QUnit): Upgrade QUnit refs
|
1153 | - Testing (QUnit): Minimize chances for QUnit random integer failure
|
1154 | - Testing (QUnit): Allow QUnit tests to pass when "Check for globals" enabled
|
1155 | (put certain test code blocks in closures)
|
1156 | - Testing (QUnit): Separate out QUnit for sake of choosing between browser
|
1157 | or Node testing, supporting node-qunit for Node testing
|
1158 | - Testing (QUnit): Upgrade to QUnit 2.0 API, lint test files
|
1159 | - Testing (QUnit): Add local copies of QUnit files
|
1160 | - Testing (QUnit): Allow `noanalytics=true` string in QUnit URL
|
1161 | (slows down testing in China where Google is blocked)
|
1162 | - Testing (Mocha): Conditionally check for `indexedDB.modules` in case we
|
1163 | are running tests without shim
|
1164 | - Testing improvement: Shim `Event` in Unicode test for parity (even
|
1165 | if not needed in current tests)
|
1166 | - Testing (Mocha): Add missing `IDBKeyRange/includes-spec.js` to browser
|
1167 | tests
|
1168 | - Testing (Mocha): Add Mocha tests to Grunt (along with clean-up) and add
|
1169 | node-qunit for Node mocha testing
|
1170 | - Testing (Mocha): Allow passing in specific test files to mocha tests
|
1171 | - Testing (Mocha): Add test to ensure unique index checks are safely ignored
|
1172 | with bad index keys
|
1173 | - Testing (Mocha): Rename test sets for distinguishing
|
1174 | - Testing (Mocha): Change fakeIndexedDB and indexedDBmock to Mocha tests
|
1175 | - Testing (Mocha): Increase default Mocha timeout to 5000ms (Chrome failing
|
1176 | some at 2000ms as was Node occasionally); tweak as needed
|
1177 | - Testing (Mocha): Safari currently problematic with (old) Sinon code; avoid on
|
1178 | error checks for Safari too
|
1179 | - Testing (Mocha): Fall back to genuine `Event`/`DOMException` when shims not
|
1180 | present (if testing native)
|
1181 | - Testing (Cordova): Update Cordova testing (untested)
|