Skip to content

Instantly share code, notes, and snippets.

View runspired's full-sized avatar
💜
Pondering Paradigms

Chris Thoburn runspired

💜
Pondering Paradigms
View GitHub Profile
View controllers.application\.js
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { guidFor } from '@ember/object/internals';
function inspect(target, key, descriptor) {
const { initializer } = descriptor;
descriptor.initializer = function $inspectInit() {
const value = initializer.call(this);
console.log(`[initialized] ${this.constructor.name}<${guidFor(this)}>.${key}`, value);
return value;
View controllers.application\.js
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
constructor() {
super(...arguments);
this.user = this.store.push({
data: {
type: 'user',
View controllers.application\.js
import Controller from '@ember/controller';
import { A } from '@ember/array';
const ArrayLike = { length: 0 };
Object.defineProperty(ArrayLike, '[]', {
enumerable: true,
//configurable: false,
get() {
return 0;
},
View controllers.application\.js
const ArrayLike = { length: 0 };
Object.defineProperty(ArrayLike.prototype, 'push', {
enumerable: true,
configurable: false,
get() {
return 0;
},
set() {
throw new Error('Do Not Set');
}
@runspired
runspired / scan.js
Created September 12, 2023 05:28
Element Scan
View scan.js
function timedGet(selector) { let start = performance.now(); let all = document.querySelectorAll(selector); let end = performance.now(); return { start, end, all }; }
function iterateAll(selector, cb) {
let data = timedGet(selector);
for (let e of data.all) cb(e);
let end = performance.now();
console.log({ start: data.start, iter: data.end, end, duration: end - data.start })
}
seen2 = new Set(); iterateAll('*', (e) => seen2.add(e));
@runspired
runspired / controllers.application\.js
Last active April 14, 2023 21:51
Transactional Bulk Endpoint
View controllers.application\.js
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { recordIdentifierFor } from '@ember-data/store';
let count = 2;
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
@service store;
View controllers.application\.js
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { set, action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
export default class ApplicationController extends Controller {
@service store;
@service archive;
@tracked archivedRecord = null;
@runspired
runspired / controllers.application\.js
Last active April 12, 2023 01:55
Immutable Proxy
View controllers.application\.js
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
class Ref {
@tracked p = 0;
}
function immutable(value, tag) {
return new Proxy(value, {
View controllers.application\.js
import Controller from '@ember/controller';
import { Promise as RSVPromise } from 'rsvp';
const a = new Promise(() => {});
const b = new RSVPromise(() => {});
function isFn(val) {
return typeof value === 'function' && typeof value.nodeType !== 'number'
}
View controllers.application\.js
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}