1 | /**
|
---|
2 | * Debugging support for web applications.
|
---|
3 | *
|
---|
4 | * @author David I. Lehn <dlehn@digitalbazaar.com>
|
---|
5 | *
|
---|
6 | * Copyright 2008-2013 Digital Bazaar, Inc.
|
---|
7 | */
|
---|
8 | var forge = require('./forge');
|
---|
9 |
|
---|
10 | /* DEBUG API */
|
---|
11 | module.exports = forge.debug = forge.debug || {};
|
---|
12 |
|
---|
13 | // Private storage for debugging.
|
---|
14 | // Useful to expose data that is otherwise unviewable behind closures.
|
---|
15 | // NOTE: remember that this can hold references to data and cause leaks!
|
---|
16 | // format is "forge._debug.<modulename>.<dataname> = data"
|
---|
17 | // Example:
|
---|
18 | // (function() {
|
---|
19 | // var cat = 'forge.test.Test'; // debugging category
|
---|
20 | // var sState = {...}; // local state
|
---|
21 | // forge.debug.set(cat, 'sState', sState);
|
---|
22 | // })();
|
---|
23 | forge.debug.storage = {};
|
---|
24 |
|
---|
25 | /**
|
---|
26 | * Gets debug data. Omit name for all cat data Omit name and cat for
|
---|
27 | * all data.
|
---|
28 | *
|
---|
29 | * @param cat name of debugging category.
|
---|
30 | * @param name name of data to get (optional).
|
---|
31 | * @return object with requested debug data or undefined.
|
---|
32 | */
|
---|
33 | forge.debug.get = function(cat, name) {
|
---|
34 | var rval;
|
---|
35 | if(typeof(cat) === 'undefined') {
|
---|
36 | rval = forge.debug.storage;
|
---|
37 | } else if(cat in forge.debug.storage) {
|
---|
38 | if(typeof(name) === 'undefined') {
|
---|
39 | rval = forge.debug.storage[cat];
|
---|
40 | } else {
|
---|
41 | rval = forge.debug.storage[cat][name];
|
---|
42 | }
|
---|
43 | }
|
---|
44 | return rval;
|
---|
45 | };
|
---|
46 |
|
---|
47 | /**
|
---|
48 | * Sets debug data.
|
---|
49 | *
|
---|
50 | * @param cat name of debugging category.
|
---|
51 | * @param name name of data to set.
|
---|
52 | * @param data data to set.
|
---|
53 | */
|
---|
54 | forge.debug.set = function(cat, name, data) {
|
---|
55 | if(!(cat in forge.debug.storage)) {
|
---|
56 | forge.debug.storage[cat] = {};
|
---|
57 | }
|
---|
58 | forge.debug.storage[cat][name] = data;
|
---|
59 | };
|
---|
60 |
|
---|
61 | /**
|
---|
62 | * Clears debug data. Omit name for all cat data. Omit name and cat for
|
---|
63 | * all data.
|
---|
64 | *
|
---|
65 | * @param cat name of debugging category.
|
---|
66 | * @param name name of data to clear or omit to clear entire category.
|
---|
67 | */
|
---|
68 | forge.debug.clear = function(cat, name) {
|
---|
69 | if(typeof(cat) === 'undefined') {
|
---|
70 | forge.debug.storage = {};
|
---|
71 | } else if(cat in forge.debug.storage) {
|
---|
72 | if(typeof(name) === 'undefined') {
|
---|
73 | delete forge.debug.storage[cat];
|
---|
74 | } else {
|
---|
75 | delete forge.debug.storage[cat][name];
|
---|
76 | }
|
---|
77 | }
|
---|
78 | };
|
---|