Skip to content

Instantly share code, notes, and snippets.

View arv's full-sized avatar
👋
Reflecting...

Erik Arvidsson arv

👋
Reflecting...
View GitHub Profile
@arv
arv / README.md
Last active February 10, 2023 16:19
Replicache MemStore

MemStore

This is the MemStore implementaion as used in Replicache 12.1

This depends on files not included in this gist but these should be pretty self describing.

@arv
arv / example.ts
Last active November 17, 2022 08:43
A simple TypeScript Immutable type
import type {Immutable} from './immutable.js';
type Todo = {
id: string;
done: boolean;
order: string;
text: string;
};
type ImmutableTodo = Immutable<Todo>;
@arv
arv / README.md
Last active April 11, 2022 09:54
fractional-indexing and Jest
node --version # v17.9.0
npm --version # 8.5.5
npm install
npm run test
import { useEffect, useState } from "react";
import { MutatorDefs, Replicache, ReplicacheOptions } from "replicache";
export function useReplicache<MD extends MutatorDefs>(
opts: ReplicacheOptions<MD>
): Replicache<MD> | null {
const [rep, setRep] = useState<Replicache<MD> | null>(null);
useEffect(() => {
const r = new Replicache(opts);
setRep(r);
'use strict';
class Base {
constructor(x) {
this.x = x;
}
}
let f;
class D1 extends Base {
constructor() {
@arv
arv / .js
Last active August 29, 2015 14:17
createPropertyAccessor: function(name, ignoreWrites) {
var proto = this.prototype;
var privateName = name + '_';
var privateObservable = name + 'Observable_';
Object.defineProperty(proto, name, {
get: function() {
var observable = this[privateObservable];
if (observable)
observable.deliver();
@arv
arv / test.js
Created February 20, 2015 01:38
Map -0 bug
var assert = {
equal: function(x, y) {
if (x === y) return;
throw new Error();
},
isTrue: function(x) {
if (x) return;
throw new Error();
}
};
@arv
arv / gist:d9082aea49e47657bc21
Last active August 29, 2015 14:04
Custom Elements with @@create

At the July TC39 meeting we decided to explore removing @@create in favor of a model where super() in a [[Construct]] call creates the instance object. To correctly know how to create the instance and set the prototype a [[Construct]] call gets an implicit receiver which is the constructor function new was called with.

class Base {
  constructor() {
    var object = Object.create(new*.prototype);  // new binding needs new syntax...
                                                 // bikeshed...
    myWeakMap.set(object, myHiddenData);
    return object;
 }
@arv
arv / 0_reuse_code.js
Created July 16, 2014 14:02
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@arv
arv / 13.10.4.md
Last active August 29, 2015 14:02
Unscopables spec update

13.10.4 Runtime Semantics: Evaluation

WithStatement : with ( Expression ) Statement

  1. Let val be the result of evaluating Expression.
  2. Let obj be ToObject(GetValue(val)).
  3. ReturnIfAbrupt(obj).
  4. Let oldEnv be the running execution context’s LexicalEnvironment.
  5. Let newEnv be NewObjectEnvironment(obj, oldEnv).