addon-sdk/source/lib/sdk/ui/id.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:530a8245fd47
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 'use strict';
5
6 module.metadata = {
7 'stability': 'experimental'
8 };
9
10 const method = require('../../method/core');
11 const { uuid } = require('../util/uuid');
12
13 // NOTE: use lang/functional memoize when it is updated to use WeakMap
14 function memoize(f) {
15 const memo = new WeakMap();
16
17 return function memoizer(o) {
18 let key = o;
19 if (!memo.has(key))
20 memo.set(key, f.apply(this, arguments));
21 return memo.get(key);
22 };
23 }
24
25 let identify = method('identify');
26 identify.define(Object, memoize(function() { return uuid(); }));
27 exports.identify = identify;

mercurial