Skip to content

Instantly share code, notes, and snippets.

View inexorabletash's full-sized avatar

Joshua Bell inexorabletash

View GitHub Profile

STATUS: Obsolete - see this updated proposal instead.

Extend IDBDatabase with:

interface IDBDatabase {
  IDBExplicitTransaction explicitTransaction(scope, mode);
};
@inexorabletash
inexorabletash / bracket.js
Created March 19, 2014 19:02
Resource Disposal: Haskell's Bracket pattern in JS
// http://cautionsingularityahead.blogspot.com/2012/07/resource-using-in-javascript.html
// Say you have a heavy-weight resource that you can explicitly finalize - either through
// some API or just by dropping a reference when you're done even if you want to hold onto
// the wrapper:
function Resource(a) {
var res = "a resource of " + a;
this.get = function() {
return res;
@inexorabletash
inexorabletash / ansi_colors
Created February 20, 2014 20:30
Bash color utilities
#!/usr/bin/env bash
# Usage:
# echo -e "... $(text-style style ...) ..."
# echo -e "... $(text-reset) ..."
# echo -e "... $(text-color r g b) ..."
# echo -e "... $(background-color r g b) ..."
#
# Where:
# styles:
@inexorabletash
inexorabletash / @ OBSOLETE IndexedDB Promises.md
Last active January 19, 2024 05:50
IndexedDB with Promises Hackery
@inexorabletash
inexorabletash / idb_key_list.js
Last active November 22, 2019 00:48
How to iterate over a list of keys using a cursor, using IndexedDB.
// Copyright 2019 Google LLC.
// SPDX-License-Identifier: Apache-2.0
var name = 'db' + Date.now();
var openReq = indexedDB.open(name, 1);
openReq.onupgradeneeded = function() {
var db = openReq.result;
var store = db.createObjectStore('store');
for (var i = 0; i < 100; i += 10)
store.put("record-" + i, i);
@inexorabletash
inexorabletash / idbkeyrange_forprefix.js
Last active October 19, 2023 15:23
Helper for creating an IDBKeyRange for all keys with a given prefix
// Copyright 2019 Google LLC.
// SPDX-License-Identifier: Apache-2.0
// Basic p(r)olyfill for proposed feature
// This defines no successor of empty arrays, so the range for prefix
// [] or [[],[]] has no upper bound.
// An alternate definition would preclude adding additional nesting,
// so the range for prefix [] would have upper bound [[]] and the
// range for prefix [[], []] would have upper bound [[], [[]]].