UNPKG

swgg-github-pulls

Version:

this zero-dependency package will provide a (nodejs-compatible) swagger-client for github-pulls's web-apis, with a working web-demo

1,287 lines (1,244 loc) 1.6 MB
/* this rollup was created with utility2 (https://github.com/kaizhu256/node-utility2) */ /* script-begin /assets.utility2.rollup.begin.js */ /* utility2.rollup.js begin */ /* istanbul ignore all */ /*jslint bitwise: true, browser: true, maxerr: 4, maxlen: 100, node: true, nomen: true, regexp: true, stupid: true */ (function () { "use strict"; var local; local = {}; local.modeJs = (function () { try { return typeof navigator.userAgent === "string" && typeof document.querySelector("body") === "object" && typeof XMLHttpRequest.prototype.open === "function" && "browser"; } catch (errorCaughtBrowser) { return module.exports && typeof process.versions.node === "string" && typeof require("http").createServer === "function" && "node"; } }()); local.global = local.modeJs === "browser" ? window : global; local.local = local.global.utility2_rollup = local.global.utility2_rollup_old || local; local.global.utility2_rollup_old = null; }()); /* script-end /assets.utility2.rollup.begin.js */ /* script-begin /assets.utility2.lib.apidoc.js */ ///usr/bin/env node /* istanbul instrument in package apidoc */ /* jslint-utility2 */ /*jslint bitwise: true, browser: true, maxerr: 4, maxlen: 100, node: true, nomen: true, regexp: true, stupid: true */ (function () { 'use strict'; var local; // run shared js-env code - init-before (function () { // init local local = {}; // init modeJs local.modeJs = (function () { try { return typeof navigator.userAgent === 'string' && typeof document.querySelector('body') === 'object' && typeof XMLHttpRequest.prototype.open === 'function' && 'browser'; } catch (errorCaughtBrowser) { return module.exports && typeof process.versions.node === 'string' && typeof require('http').createServer === 'function' && 'node'; } }()); // init global local.global = local.modeJs === 'browser' ? window : global; // init utility2_rollup local = local.global.utility2_rollup || local; /* istanbul ignore next */ if (!local) { local = local.global.utility2_rollup || local.global.utility2_rollup_old || require('./assets.utility2.rollup.js'); local.fs = null; } // init exports if (local.modeJs === 'browser') { local.global.utility2_apidoc = local; } else { // require builtins // local.assert = require('assert'); local.buffer = require('buffer'); local.child_process = require('child_process'); local.cluster = require('cluster'); local.console = require('console'); local.constants = require('constants'); local.crypto = require('crypto'); local.dgram = require('dgram'); local.dns = require('dns'); local.domain = require('domain'); local.events = require('events'); local.fs = require('fs'); local.http = require('http'); local.https = require('https'); local.module = require('module'); local.net = require('net'); local.os = require('os'); local.path = require('path'); local.process = require('process'); local.punycode = require('punycode'); local.querystring = require('querystring'); local.readline = require('readline'); local.repl = require('repl'); local.stream = require('stream'); local.string_decoder = require('string_decoder'); local.timers = require('timers'); local.tls = require('tls'); local.tty = require('tty'); local.url = require('url'); local.util = require('util'); local.v8 = require('v8'); local.vm = require('vm'); local.zlib = require('zlib'); /* validateLineSortedReset */ module.exports = local; module.exports.__dirname = __dirname; } // init lib local.local = local.apidoc = local; }()); // run shared js-env code - function-before /* istanbul ignore next */ (function () { local.assert = function (passed, message, onError) { /* * this function will throw the error message if passed is falsey */ var error; if (passed) { return; } error = message && message.message // if message is an error-object, then leave it as is ? message : new Error(typeof message === 'string' // if message is a string, then leave it as is ? message // else JSON.stringify message : JSON.stringify(message)); // debug error local._debugAssertError = error; onError = onError || function (error) { throw error; }; onError(error); }; local.cliRun = function (fnc) { /* * this function will run the cli */ var nop; nop = function () { /* * this function will do nothing */ return; }; local.cliDict._eval = local.cliDict._eval || function () { /* * code * eval code */ local.global.local = local; require('vm').runInThisContext(process.argv[3]); }; local.cliDict['--eval'] = local.cliDict['--eval'] || local.cliDict._eval; local.cliDict['-e'] = local.cliDict['-e'] || local.cliDict._eval; local.cliDict._help = local.cliDict._help || function () { /* * [none] * print help */ var element, result, lengthList, sortDict; console.log(require(__dirname + '/package.json').name + ' v' + require(__dirname + '/package.json').version); sortDict = {}; result = [['[command]', '[args]', '[description]', -1]]; lengthList = [result[0][0].length, result[0][1].length]; Object.keys(local.cliDict).sort().forEach(function (key, ii) { if (key[0] === '_' && key !== '_default') { return; } sortDict[local.cliDict[key].toString()] = sortDict[local.cliDict[key].toString()] || (ii + 1); element = (/\n +\*(.*)\n +\*(.*)/).exec(local.cliDict[key].toString()); // coverage-hack - ignore else-statement nop(local.global.__coverage__ && (function () { element = element || ['', '', '']; }())); element = [ key.replace('_default', '[none]') + ' ', element[1].trim() + ' ', element[2].trim(), (sortDict[local.cliDict[key].toString()] << 8) + ii ]; result.push(element); lengthList.forEach(function (length, jj) { lengthList[jj] = Math.max(element[jj].length, length); }); }); result.sort(function (aa, bb) { return aa[3] < bb[3] ? -1 : 1; }); console.log('usage: ' + __filename + ' [command] [args]'); console.log('example: ' + __filename + ' --eval ' + '"console.log(\'hello world\')"\n'); result.forEach(function (element, ii) { lengthList.forEach(function (length, jj) { while (element[jj].length < length) { element[jj] += '-'; } }); element = element.slice(0, 3).join('---- '); if (!ii) { element = element.replace((/-/g), ' '); } console.log(element); }); }; local.cliDict['--help'] = local.cliDict['--help'] || local.cliDict._help; local.cliDict['-h'] = local.cliDict['-h'] || local.cliDict._help; local.cliDict._default = local.cliDict._default || local.cliDict._help; local.cliDict.help = local.cliDict.help || local.cliDict._help; local.cliDict._interactive = local.cliDict._interactive || function () { /* * [none] * start interactive-mode */ local.global.local = local; local.replStart(); }; if (local.replStart) { local.cliDict['--interactive'] = local.cliDict['--interactive'] || local.cliDict._interactive; local.cliDict['-i'] = local.cliDict['-i'] || local.cliDict._interactive; } local.cliDict._version = local.cliDict._version || function () { /* * [none] * print version */ console.log(require(__dirname + '/package.json').version); }; local.cliDict['--version'] = local.cliDict['--version'] || local.cliDict._version; local.cliDict['-v'] = local.cliDict['-v'] || local.cliDict._version; // run fnc() fnc = fnc || function () { if (local.cliDict[process.argv[2]]) { local.cliDict[process.argv[2]](); return; } local.cliDict._default(); }; fnc(); }; local.moduleDirname = function (module, modulePathList) { /* * this function will search modulePathList for the module's __dirname */ var result; // search process.cwd() if (!module || module === '.' || module.indexOf('/') >= 0) { return require('path').resolve(process.cwd(), module || ''); } // search modulePathList ['node_modules'] .concat(modulePathList) .concat(require('module').globalPaths) .concat([process.env.HOME + '/node_modules', '/usr/local/lib/node_modules']) .some(function (modulePath) { try { result = require('path').resolve(process.cwd(), modulePath + '/' + module); result = require('fs').statSync(result).isDirectory() && result; return result; } catch (errorCaught) { result = null; } return result; }); return result || ''; }; local.nop = function () { /* * this function will do nothing */ return; }; local.objectSetDefault = function (arg, defaults, depth) { /* * this function will recursively set defaults for undefined-items in the arg */ arg = arg || {}; defaults = defaults || {}; Object.keys(defaults).forEach(function (key) { var arg2, defaults2; arg2 = arg[key]; // handle misbehaving getter try { defaults2 = defaults[key]; } catch (ignore) { } if (defaults2 === undefined) { return; } // init arg[key] to default value defaults[key] switch (arg2) { case '': case null: case undefined: arg[key] = defaults2; return; } // if arg2 and defaults2 are both non-null and non-array objects, // then recurse with arg2 and defaults2 if (depth > 1 && // arg2 is a non-null and non-array object typeof arg2 === 'object' && arg2 && !Array.isArray(arg2) && // defaults2 is a non-null and non-array object typeof defaults2 === 'object' && defaults2 && !Array.isArray(defaults2)) { // recurse local.objectSetDefault(arg2, defaults2, depth - 1); } }); return arg; }; local.stringHtmlSafe = function (text) { /* * this function will make the text html-safe * https://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html */ return text .replace((/"/g), '&quot;') .replace((/&/g), '&amp;') .replace((/'/g), '&apos;') .replace((/</g), '&lt;') .replace((/>/g), '&gt;') .replace((/&amp;(amp;|apos;|gt;|lt;|quot;)/ig), '&$1'); }; local.templateRender = function (template, dict, options) { /* * this function will render the template with the given dict */ var argList, getValue, match, renderPartial, rgx, tryCatch, skip, value; dict = dict || {}; options = options || {}; getValue = function (key) { argList = key.split(' '); value = dict; if (argList[0] === '#this/') { return; } // iteratively lookup nested values in the dict argList[0].split('.').forEach(function (key) { value = value && value[key]; }); return value; }; renderPartial = function (match0, helper, key, partial) { switch (helper) { case 'each': case 'eachTrimRightComma': value = getValue(key); value = Array.isArray(value) ? value.map(function (dict) { // recurse with partial return local.templateRender(partial, dict, options); }).join('') : ''; // remove trailing-comma from last element if (helper === 'eachTrimRightComma') { value = value.trimRight().replace((/,$/), ''); } return value; case 'if': partial = partial.split('{{#unless ' + key + '}}'); partial = getValue(key) ? partial[0] // handle 'unless' case : partial.slice(1).join('{{#unless ' + key + '}}'); // recurse with partial return local.templateRender(partial, dict, options); case 'unless': return getValue(key) ? '' // recurse with partial : local.templateRender(partial, dict, options); default: // recurse with partial return match0[0] + local.templateRender(match0.slice(1), dict, options); } }; tryCatch = function (fnc, message) { /* * this function will prepend the message to errorCaught */ try { return fnc(); } catch (errorCaught) { errorCaught.message = message + errorCaught.message; throw errorCaught; } }; // render partials rgx = (/\{\{#(\w+) ([^}]+?)\}\}/g); template = template || ''; for (match = rgx.exec(template); match; match = rgx.exec(template)) { rgx.lastIndex += 1 - match[0].length; template = template.replace( new RegExp('\\{\\{#(' + match[1] + ') (' + match[2] + ')\\}\\}([\\S\\s]*?)\\{\\{/' + match[1] + ' ' + match[2] + '\\}\\}'), renderPartial ); } // search for keys in the template return template.replace((/\{\{[^}]+?\}\}/g), function (match0) { var markdownToHtml, notHtmlSafe; notHtmlSafe = options.notHtmlSafe; return tryCatch(function () { getValue(match0.slice(2, -2)); if (value === undefined) { return match0; } argList.slice(1).forEach(function (arg, ii, list) { switch (arg) { case 'alphanumeric': value = value.replace((/\W/g), '_'); break; case 'decodeURIComponent': value = decodeURIComponent(value); break; case 'encodeURIComponent': value = encodeURIComponent(value); break; case 'jsonStringify': value = JSON.stringify(value); break; case 'jsonStringify4': value = JSON.stringify(value, null, 4); break; case 'markdownSafe': value = value.replace((/`/g), '\''); break; case 'markdownToHtml': markdownToHtml = true; break; case 'notHtmlSafe': notHtmlSafe = true; break; case 'truncate': skip = ii + 1; if (value.length > list[skip]) { value = value.slice(0, list[skip] - 3).trimRight() + '...'; } break; // default to String.prototype[arg]() default: if (ii === skip) { break; } value = value[arg](); break; } }); value = String(value); // default to htmlSafe if (!notHtmlSafe) { value = value .replace((/"/g), '&quot;') .replace((/&/g), '&amp;') .replace((/'/g), '&apos;') .replace((/</g), '&lt;') .replace((/>/g), '&gt;') .replace((/&amp;(amp;|apos;|gt;|lt;|quot;)/ig), '&$1'); } if (markdownToHtml && typeof local.marked === 'function') { value = local.marked(value) .replace((/&amp;(amp;|apos;|gt;|lt;|quot;)/ig), '&$1'); } return value; }, 'templateRender could not render expression ' + JSON.stringify(match0) + '\n'); }); }; local.tryCatchOnError = function (fnc, onError) { /* * this function will try to run the fnc in a try-catch block, * else call onError with the errorCaught */ var result; // validate onError local.assert(typeof onError === 'function', typeof onError); try { // reset errorCaught local._debugTryCatchError = null; result = fnc(); local._debugTryCatchError = null; return result; } catch (errorCaught) { // debug errorCaught local._debugTryCatchError = errorCaught; return onError(errorCaught); } }; }()); // run shared js-env code - init-before /* jslint-ignore-begin */ local.templateApidocHtml = '\ <div class="apidocDiv">\n\ <style>\n\ /*csslint\n\ */\n\ .apidocDiv {\n\ background: #fff;\n\ font-family: Arial, Helvetica, sans-serif;\n\ }\n\ .apidocDiv a[href] {\n\ color: #33f;\n\ font-weight: bold;\n\ text-decoration: none;\n\ }\n\ .apidocDiv a[href]:hover {\n\ text-decoration: underline;\n\ }\n\ .apidocCodeCommentSpan {\n\ background: #bbf;\n\ color: #000;\n\ display: block;\n\ }\n\ .apidocCodeKeywordSpan {\n\ color: #d00;\n\ font-weight: bold;\n\ }\n\ .apidocCodePre {\n\ background: #eef;\n\ border: 1px solid;\n\ color: #777;\n\ overflow-wrap: break-word;\n\ padding: 5px;\n\ white-space: pre-wrap;\n\ }\n\ .apidocFooterDiv {\n\ margin-top: 20px;\n\ text-align: center;\n\ }\n\ .apidocModuleLi {\n\ margin-top: 10px;\n\ }\n\ .apidocSectionDiv {\n\ border-top: 1px solid;\n\ margin-top: 20px;\n\ }\n\ .apidocSignatureSpan {\n\ color: #777;\n\ font-weight: bold;\n\ }\n\ </style>\n\ <h1>api documentation for\n\ <a\n\ {{#if env.npm_package_homepage}}\n\ href="{{env.npm_package_homepage}}"\n\ {{/if env.npm_package_homepage}}\n\ >{{env.npm_package_name}} (v{{env.npm_package_version}})</a>\n\ </h1>\n\ <h4>{{env.npm_package_description}}</h4>\n\ <div class="apidocSectionDiv"><a\n\ href="#apidoc.tableOfContents"\n\ id="apidoc.tableOfContents"\n\ ><h1>table of contents</h1></a><ol>\n\ {{#each moduleList}}\n\ <li class="apidocModuleLi"><a href="#{{id}}">module {{name}}</a><ol>\n\ {{#each elementList}}\n\ <li>\n\ {{#if source}}\n\ <a class="apidocElementLiA" href="#{{id}}">\n\ {{name}}\n\ <span class="apidocSignatureSpan">{{signature}}</span>\n\ </a>\n\ {{#unless source}}\n\ <span class="apidocSignatureSpan">{{name}}</span>\n\ {{/if source}}\n\ </li>\n\ {{/each elementList}}\n\ </ol></li>\n\ {{/each moduleList}}\n\ </ol></div>\n\ {{#each moduleList}}\n\ <div class="apidocSectionDiv">\n\ <h1><a href="#{{id}}" id="{{id}}">module {{name}}</a></h1>\n\ {{#each elementList}}\n\ {{#if source}}\n\ <h2>\n\ <a href="#{{id}}" id="{{id}}">\n\ {{name}}\n\ <span class="apidocSignatureSpan">{{signature}}</span>\n\ </a>\n\ </h2>\n\ <ul>\n\ <li>description and source-code<pre class="apidocCodePre">{{source truncate 4096}}</pre></li>\n\ <li>example usage<pre class="apidocCodePre">{{example}}</pre></li>\n\ </ul>\n\ {{/if source}}\n\ {{/each elementList}}\n\ </div>\n\ {{/each moduleList}}\n\ <div class="apidocFooterDiv">\n\ [ this document was created with\n\ <a href="https://github.com/kaizhu256/node-utility2" target="_blank">utility2</a>\n\ ]\n\ </div>\n\ </div>\n\ '; /* jslint-ignore-end */ // run shared js-env code - function (function () { local.apidocCreate = function (options) { /* * this function will create the apidoc from options.dir */ var elementCreate, module, moduleMain, readExample, tmp, toString, trimLeft; elementCreate = function (module, prefix, key) { /* * this function will create the apidoc-element in the given module */ var element; if (options.modeNoApidoc) { return element; } element = {}; element.moduleName = prefix.split('.'); // handle case where module is a function if (element.moduleName.slice(-1)[0] === key) { element.moduleName.pop(); } element.moduleName = element.moduleName.join('.'); element.id = encodeURIComponent('apidoc.element.' + prefix + '.' + key); element.typeof = typeof module[key]; element.name = (element.typeof + ' <span class="apidocSignatureSpan">' + element.moduleName + '.</span>' + key) // handle case where module is a function .replace('>.<', '><'); if (element.typeof !== 'function') { return element; } // init source element.source = local.stringHtmlSafe(trimLeft(toString(module[key])) || 'n/a') .replace((/\([\S\s]*?\)/), function (match0) { // init signature element.signature = match0 .replace((/ *?\/\*[\S\s]*?\*\/ */g), '') .replace((/,/g), ', ') .replace((/\s+/g), ' '); return element.signature; }) .replace( (/( *?\/\*[\S\s]*?\*\/\n)/), '<span class="apidocCodeCommentSpan">$1</span>' ) .replace((/^function \(/), key + ' = function ('); // init example options.exampleList.some(function (example) { example.replace( new RegExp('((?:\n.*?){8}\\.)(' + key + ')(\\((?:.*?\n){8})'), function (match0, match1, match2, match3) { // jslint-hack local.nop(match0); element.example = '...' + trimLeft(local.stringHtmlSafe(match1) + '<span class="apidocCodeKeywordSpan">' + local.stringHtmlSafe(match2) + '</span>' + local.stringHtmlSafe(match3)).trimRight() + '\n...'; } ); return element.example; }); element.example = element.example || 'n/a'; return element; }; readExample = function (file) { /* * this function will read the example from the given file */ var result; local.tryCatchOnError(function () { file = local.path.resolve(options.dir, file); console.error('apidocCreate - readExample ' + file); result = ''; result = ('\n\n\n\n\n\n\n\n' + // bug-workaround - truncate example to manageable size local.fs.readFileSync(file, 'utf8').slice(0, 262144) + '\n\n\n\n\n\n\n\n').replace((/\r\n*/g), '\n'); }, console.error); return result; }; toString = function (value) { /* * this function will try to return the string form of the value */ var result; local.tryCatchOnError(function () { result = ''; result = String(value); }, console.error); return result; }; trimLeft = function (text) { /* * this function will normalize the whitespace around the text */ var whitespace; whitespace = ''; text.trim().replace((/^ */gm), function (match0) { if (!whitespace || match0.length < whitespace.length) { whitespace = match0; } }); text = text.replace(new RegExp('^' + whitespace, 'gm'), ''); // enforce 128 character column limit text = text.replace((/^.{128}[^\\\n]+/gm), function (match0) { return match0.replace((/(.{128}(?:\b|\w+))/g), '$1\n').trimRight(); }); return text; }; // init options options.dir = local.moduleDirname( options.dir, options.modulePathList || local.module.paths ); local.objectSetDefault(options, { env: { npm_package_description: '' }, packageJson: JSON.parse(readExample('package.json')), require: function (file) { return local.tryCatchOnError(function () { return require(file); }, console.error); } }); Object.keys(options.packageJson).forEach(function (key) { tmp = options.packageJson[key]; // strip email from npmdoc documentation // https://github.com/npmdoc/node-npmdoc-hpp/issues/1 if (tmp) { if (tmp.email) { delete tmp.email; } if (Array.isArray(tmp)) { tmp.forEach(function (element) { if (element && element.email) { delete element.email; } }); } } if (key[0] === '_' || key === 'readme') { delete options.packageJson[key]; } else if (typeof tmp === 'string') { options.env['npm_package_' + key] = tmp; } }); local.objectSetDefault(options, { blacklistDict: { global: global }, circularList: [global], exampleDict: {}, exampleList: [], html: '', libFileList: [], moduleDict: {}, moduleExtraDict: {}, packageJson: { bin: {} }, template: local.templateApidocHtml, whitelistDict: {} }, 2); // init exampleList [1, 2, 3, 4].forEach(function (depth) { options.exampleList = options.exampleList.concat( // find . -maxdepth 1 -mindepth 1 -name "*.js" -type f // http://stackoverflow.com/questions/4509624/how-to-limit-depth-for-recursive-file-list local.child_process.execSync('find "' + options.dir + '" -maxdepth ' + depth + ' -mindepth ' + depth + ' -type f | sed -e "s|' + options.dir + '/||" | grep -iv ' + /* jslint-ignore-begin */ '"\ /\\.\\|\\(\\b\\|_\\)\\(\ bower_component\\|\ coverage\\|\ git\\|\ min\\|\ node_module\\|\ rollup\\|\ tmp\\|\ vendor\\)s\\{0,1\\}\\(\\b\\|_\\)\ " ' + /* jslint-ignore-end */ ' | sort | head -n 256').toString() .split('\n') ); }); options.exampleList = options.exampleList.filter(function (file) { if (file && !options.exampleDict[file]) { options.exampleDict[file] = true; return true; } }).slice(0, 256).map(readExample); // init moduleMain local.tryCatchOnError(function () { console.error('apidocCreate - requiring ' + options.dir + ' ...'); moduleMain = {}; moduleMain = options.moduleDict[options.env.npm_package_name] || options.require(options.dir) || options.require(options.dir + '/' + (options.packageJson.bin)[Object.keys(options.packageJson.bin)[0]]) || {}; options.circularList.push(moduleMain); console.error('apidocCreate - ... required ' + options.dir); }, console.error); tmp = {}; // handle case where module is a function if (typeof moduleMain === 'function') { (function () { var text; text = toString(moduleMain); tmp = function () { return; }; // coverage-hack tmp(); Object.defineProperties(tmp, { toString: { get: function () { return function () { return text; }; } } }); }()); } // normalize moduleMain moduleMain = options.moduleDict[options.env.npm_package_name] = local.objectSetDefault( tmp, moduleMain ); // init circularList - builtin Object.keys(process.binding('natives')).forEach(function (key) { local.tryCatchOnError(function () { options.circularList.push(require(key)); }, local.nop); }); // init circularList - blacklistDict Object.keys(options.blacklistDict).forEach(function (key) { options.circularList.push(options.blacklistDict[key]); }); // init circularList - moduleDict Object.keys(options.moduleDict).forEach(function (key) { options.circularList.push(options.moduleDict[key]); }); // init circularList - prototype Object.keys(options.circularList).forEach(function (key) { tmp = options.circularList[key]; options.circularList.push(tmp && tmp.prototype); }); // deduplicate circularList tmp = options.circularList; options.circularList = []; tmp.forEach(function (element) { if (options.circularList.indexOf(element) < 0) { options.circularList.push(element); } }); // init moduleDict child local.apidocModuleDictAdd(options, options.moduleDict); // init swgg.apiDict Object.keys((moduleMain.swgg && moduleMain.swgg.apiDict) || {}).forEach(function (key) { tmp = 'swgg.apiDict'; tmp = options.moduleDict[tmp] = options.moduleDict[tmp] || {}; tmp[key + '.ajax'] = moduleMain.swgg.apiDict[key] && moduleMain.swgg.apiDict[key].ajax; }); // init moduleExtraDict module = options.moduleExtraDict[options.env.npm_package_name] = options.moduleExtraDict[options.env.npm_package_name] || {}; [1, 2, 3, 4].forEach(function (depth) { options.libFileList = options.libFileList.concat( // find . -maxdepth 1 -mindepth 1 -name "*.js" -type f // http://stackoverflow.com/questions/4509624/how-to-limit-depth-for-recursive-file-list local.child_process.execSync('find "' + options.dir + '" -maxdepth ' + depth + ' -mindepth ' + depth + ' -name "*.js" -type f | sed -e "s|' + options.dir + '/||" | grep -iv ' + /* jslint-ignore-begin */ '"\ /\\.\\|\\(\\b\\|_\\)\\(\ archive\\|artifact\\|asset\\|\ bower_component\\|build\\|\ coverage\\|\ doc\\|dist\\|\ example\\|external\\|\ fixture\\|\ git\\|\ log\\|\ min\\|mock\\|\ node_module\\|\ rollup\\|\ spec\\|\ test\\|tmp\\|\ vendor\\)s\\{0,1\\}\\(\\b\\|_\\)\ " ' + /* jslint-ignore-end */ ' | sort | head -n 256').toString() .split('\n') ); }); options.ii = 256; options.libFileList.every(function (file) { local.tryCatchOnError(function () { tmp = {}; tmp.name = local.path.basename(file) .replace('lib.', '') .replace((/\.[^.]*?$/), '') .replace((/\W/g), '_'); [ tmp.name, tmp.name.slice(0, 1).toUpperCase() + tmp.name.slice(1) ].some(function (name) { tmp.isFiltered = name && (!options.packageJson.main || ('./' + file).indexOf(options.packageJson.main) < 0) && !module[name]; return !tmp.isFiltered; }); if (!tmp.isFiltered) { return; } console.error('apidocCreate - libFile ' + file); tmp.module = options.require(options.dir + '/' + file); // filter circular-reference if (!(tmp.module && options.circularList.indexOf(tmp.module) < 0)) { return; } options.ii -= 1; module[tmp.name] = tmp.module; }, console.error); return options.ii; }); local.apidocModuleDictAdd(options, options.moduleExtraDict); Object.keys(options.moduleDict).forEach(function (key) { if (key.indexOf(options.env.npm_package_name + '.') !== 0) { return; } tmp = key.split('.').slice(1).join('.'); moduleMain[tmp] = moduleMain[tmp] || options.moduleDict[key]; }); // init moduleList options.moduleList = Object.keys(options.moduleDict) .sort() .map(function (prefix) { module = options.moduleDict[prefix]; // handle case where module is a function if (typeof module === 'function') { local.tryCatchOnError(function () { module[prefix.split('.').slice(-1)[0]] = module[prefix.split('.').slice(-1)[0]] || module; }, console.error); } return { elementList: Object.keys(module) .filter(function (key) { return local.tryCatchOnError(function () { return key && (/^\w[\w\-.]*?$/).test(key) && key.indexOf('testCase_') !== 0 && (module[key] !== options.blacklistDict[key] || options.whitelistDict[key]); }, console.error); }) .map(function (key) { return elementCreate(module, prefix, key); }) .sort(function (aa, bb) { return aa.name > bb.name ? 1 : -1; }), id: encodeURIComponent('apidoc.module.' + prefix), name: prefix }; }); // render apidoc options.result = local.templateRender(options.template, options, { notHtmlSafe: true }) .trim() .replace((/ +$/gm), '') + '\n'; return options.result; }; local.apidocModuleDictAdd = function (options, moduleDict) { /* * this function will add the modules in moduleDict to options.moduleDict */ var isModule, objectKeys, tmp; objectKeys = function (dict) { /* * this function will return a list of the dict's keys, with valid getters */ return Object.keys(dict).sort().filter(function (key) { return local.tryCatchOnError(function () { return dict[key] || true; }, local.nop); }); }; ['child', 'prototype', 'grandchild', 'prototype'].forEach(function (element) { objectKeys(moduleDict).forEach(function (prefix) { if (!(/^\w[\w\-.]*?$/).test(prefix)) { return; } objectKeys(moduleDict[prefix]).forEach(function (key) { if (!(/^\w[\w\-.]*?$/).test(key) || !moduleDict[prefix][key]) { return; } tmp = element === 'prototype' ? { module: moduleDict[prefix][key].prototype, name: prefix + '.' + key + '.prototype' } : { module: moduleDict[prefix][key], name: prefix + '.' + key }; if (!tmp.module || !(typeof tmp.module === 'function' || typeof tmp.module === 'object') || Array.isArray(tmp.module) || options.moduleDict[tmp.name] || options.circularList.indexOf(tmp.module) >= 0) { return; } isModule = [ tmp.module, tmp.module.prototype ].some(function (dict) { return objectKeys(dict || {}).some(function (key) { return typeof dict[key] === 'function'; }); }); if (!isModule) { return; } options.circularList.push(tmp.module); options.moduleDict[tmp.name] = tmp.module; }); }); }); }; }()); switch (local.modeJs) { // run node js-env code - init-after /* istanbul ignore next */ case 'node': // init cli if (module !== require.main || local.global.utility2_rollup) { break; } local.cliDict = {}; local.cliDict._default = function () { /* * moduleDirectory * create apidoc from moduleDirectory */ // jslint files process.stdout.write(local.apidocCreate({ dir: process.argv[2], modulePathList: module.paths })); }; local.cliRun(); break; } }()); /* script-end /assets.utility2.lib.apidoc.js */ /* script-begin /assets.utility2.lib.db.js */ ///usr/bin/env node /* * assets.db-lite.js * * this zero-dependency package will provide a persistent, in-browser database * * browser example: * <script src="assets.db-lite.js"></script> * <script> * var dbTable1; * dbTable1 = window.dbTable1 = window.utility2_db.dbTableCreateOne({ name: "dbTable1" }); * dbTable1.idIndexCreate({ name: "field1" }); * dbTable1.crudSetOneById({ field1: "hello", field2: "world" }); * console.log(dbTable1.crudGetManyByQuery({ * limit: Infinity, * query: { field1: "hello" }, * skip: 0, * sort: [{ fieldName: 'field1', isDescending: false }] * })); * </script> * * node example: * var db, dbTable1; * utility2_db = require("./assets.db-lite.js"); * dbTable1 = global.dbTable1 = utility2_db.dbTableCreateOne({ name: "dbTable1" }); * dbTable1.idIndexCreate({ name: "field1" }); * dbTable1.crudSetOneById({ field1: "hello", field2: "world" }); * console.log(dbTable1.crudGetManyByQuery({ * limit: Infinity, * query: { field1: "hello" }, * skip: 0, * sort: [{ fieldName: 'field1', isDescending: false }] * })); */ /* istanbul instrument in package db */ /* jslint-utility2 */ /*jslint bitwise: true, browser: true, maxerr: 4, maxlen: 100, node: true, nomen: true, regexp: true, stupid: true */ (function () { 'use strict'; var local; // run shared js-env code - init-before (function () { // init local local = {}; // init modeJs local.modeJs = (function () { try { return typeof navigator.userAgent === 'string' && typeof document.querySelector('body') === 'object' && typeof XMLHttpRequest.prototype.open === 'function' && 'browser'; } catch (errorCaughtBrowser) { return module.exports && typeof process.versions.node === 'string' && typeof require('http').createServer === 'function' && 'node'; } }()); // init global local.global = local.modeJs === 'browser' ? window : global; // init utility2_rollup local = local.global.utility2_rollup || local; /* istanbul ignore next */ if (!local) { local = local.global.utility2_rollup || local.global.utility2_rollup_old || require('./assets.utility2.rollup.js'); local.fs = null; } // init exports if (local.modeJs === 'browser') { local.global.utility2_db = local; } else { // require builtins // local.assert = require('assert'); local.buffer = require('buffer'); local.child_process = require('child_process'); local.cluster = require('cluster'); local.console = require('console'); local.constants = require('constants'); local.crypto = require('crypto'); local.dgram = require('dgram'); local.dns = require('dns'); local.domain = require('domain'); local.events = require('events'); local.fs = require('fs'); local.http = require('http'); local.https = require('https'); local.module = require('module'); local.net = require('net'); local.os = require('os'); local.path = require('path'); local.process = require('process'); local.punycode = require('punycode'); local.querystring = require('querystring'); local.readline = require('readline'); local.repl = require('repl'); local.stream = require('stream'); local.string_decoder = require('string_decoder'); local.timers = require('timers'); local.tls = require('tls'); local.tty = require('tty'); local.url = require('url'); local.util = require('util'); local.v8 = require('v8'); local.vm = require('vm'); local.zlib = require('zlib'); /* validateLineSortedReset */ module.exports = local; module.exports.__dirname = __dirname; } // init lib local.local = local.db = local; }()); // run shared js-env code - function-before /* istanbul ignore next */ (function () { local.assert = function (passed, message, onError) { /* * this function will throw the error message if passed is falsey */ var error; if (passed) { return; } error = message && message.message // if message is an error-object, then leave it as is ? message : new Error(typeof message === 'string' // if message is a string, then leave it as is ? message // else JSON.stringify message : JSON.stringify(message)); // debug error local._debugAssertError = error; onError = onError || function (error) { throw error; }; onError(error); }; local.cliRun = function (fnc) { /* * this function will run the cli */ var nop; nop = function () { /* * this function will do nothing