locutus 2.0.30 → 2.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_util/util.js +4 -1
- package/_util/util.js.map +1 -1
- package/package.json +5 -5
- package/php/array/array_multisort.js +2 -0
- package/php/array/array_multisort.js.map +1 -1
- package/php/datetime/strtotime.js +25 -1
- package/php/datetime/strtotime.js.map +1 -1
- package/php/exec/escapeshellarg.js +16 -4
- package/php/exec/escapeshellarg.js.map +1 -1
- package/php/math/fmod.js +4 -1
- package/php/math/fmod.js.map +1 -1
- package/php/strings/bin2hex.js +27 -9
- package/php/strings/bin2hex.js.map +1 -1
- package/php/var/serialize.mocha.js +14 -0
- package/php/var/serialize.mocha.js.map +1 -0
- package/php/var/var_dump.js +18 -5
- package/php/var/var_dump.js.map +1 -1
package/_util/util.js
CHANGED
|
@@ -278,7 +278,7 @@ var Util = function () {
|
|
|
278
278
|
|
|
279
279
|
var basename = path.basename(params.filepath);
|
|
280
280
|
var subdir = path.dirname(params.filepath);
|
|
281
|
-
var testpath = this.__test + '/
|
|
281
|
+
var testpath = this.__test + '/generated/' + subdir + '/test-' + basename;
|
|
282
282
|
var testdir = path.dirname(testpath);
|
|
283
283
|
var relativeSrcForTestDir = path.relative(testdir, self.__src);
|
|
284
284
|
var relativeTestFileForRoot = path.relative(self.__root, testpath);
|
|
@@ -300,6 +300,9 @@ var Util = function () {
|
|
|
300
300
|
|
|
301
301
|
codez.push('// warning: This file is auto generated by `yarn build:tests`');
|
|
302
302
|
codez.push('// Do not edit by hand!');
|
|
303
|
+
codez.push('');
|
|
304
|
+
codez.push('\'use strict\'');
|
|
305
|
+
codez.push('');
|
|
303
306
|
|
|
304
307
|
// Add globals
|
|
305
308
|
for (var global in self.globals) {
|
package/_util/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/_util/util.js"],"names":["globby","require","path","fs","fsPromises","promises","async","YAML","debug","indentString","_","esprima","Util","argv","__src","dirname","__dirname","__root","__test","globals","pattern","concurrency","authorKeys","langDefaults","c","order","function_title_template","human","packageType","inspiration_urls","function_description_template","golang","python","ruby","php","alias","allowSkip","indexOf","_reindexBuffer","_injectwebBuffer","cb","self","_runFunctionOnAll","_injectwebOne","err","indexHtml","writeFileSync","_reindexOne","indexJs","requires","sort","join","_writetestOne","runFunc","q","queue","fullpath","callback","_load","bind","params","files","sync","push","drain","filepath","dir","basefile","basename","module","line","authors","forEach","key","headKeys","flattenDeep","langPath","language","langIndexPath","catPath","category","catIndexPath","funcPath","func_name","langTitle","langData","Object","assign","warning","type","layout","title","dump","trim","catTitle","catData","functionTitle","replace","functionDescription","funcData","examples","example","map","lines","i","returns","dependencies","notes","note","description","function","permalink","buf","code","mkdir","recursive","then","writeFile","Error","name","relativeSrcForTest","JSON","stringify","subdir","testpath","testdir","relativeSrcForTestDir","relative","relativeTestFileForRoot","testProps","test","describeSkip","codez","global","_addRequire","length","humanIndex","parseInt","itSkip","body","testExpected","j","fileOrName","requesterParams","substr","msg","readFile","_opener","_parse","depCodePath","loaded","_findDependencies","parts","split","shift","codepath","pop","ast","parseScript","comment","loc","range","moduleExports","filter","node","leftArg","expression","left","rightArg","right","object","property","id","exp","funcName","funcParams","p","funcLoc","firstFuncBodyElementLoc","headComments","comments","start","end","value","_headKeys","func_arguments","headLines","keys","match","dmatch","val","num","exports"],"mappings":"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","file":"util.js","sourcesContent":["const globby = require('globby')\nconst path = require('path')\nconst fs = require('fs')\nconst fsPromises = fs.promises\nconst async = require('async')\nconst YAML = require('js-yaml')\nconst debug = require('debug')('locutus:utils')\nconst indentString = require('indent-string')\nconst _ = require('lodash')\nconst esprima = require('esprima')\n\nclass Util {\n constructor(argv) {\n if (!argv) {\n argv = []\n }\n this.__src = path.dirname(__dirname)\n this.__root = path.dirname(path.dirname(__dirname))\n this.__test = path.dirname(path.dirname(__dirname)) + '/test'\n\n this.globals = {}\n\n this.pattern = [this.__src + '/**/**/*.js', '!**/index.js', '!**/_util/**']\n this.concurrency = 8\n this.authorKeys = [\n 'original by',\n 'improved by',\n 'reimplemented by',\n 'parts by',\n 'bugfixed by',\n 'revised by',\n 'input by',\n ]\n\n this.langDefaults = {\n c: {\n order: 1,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'C',\n packageType: 'header file',\n inspiration_urls: [\n '<a href=\"https://en.cppreference.com/w/c/numeric/math\">the C math.h documentation</a>',\n '<a href=\"https://sourceware.org/git/?p=glibc.git;a=tree;f=math;hb=HEAD\">the C math.h source</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://en.cppreference.com/w/c/numeric/[category]/[function]\">[language]\\'s [function] found in the [category].h header file</a> looks like.',\n },\n golang: {\n order: 2,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Go',\n packageType: 'package',\n inspiration_urls: [\n '<a href=\"https://golang.org/pkg/strings/\">Go strings documentation</a>',\n '<a href=\"https://golang.org/src/strings/strings.go\">Go strings source</a>',\n '<a href=\"https://golang.org/src/strings/example_test.go\">Go strings examples source</a>',\n '<a href=\"https://gophersjs.com\">GopherJS</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://golang.org/pkg/[category]/#[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n python: {\n order: 3,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Python',\n packageType: 'module',\n inspiration_urls: [\n '<a href=\"https://docs.python.org/3/library/string.html\">the Python 3 standard library string page</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://docs.python.org/3/library/[category].html#[category].[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n ruby: {\n order: 4,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Ruby',\n packageType: 'module',\n inspiration_urls: ['<a href=\"https://ruby-doc.org/core-2.2.2/Math.html\">the Ruby core documentation</a>'],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://ruby-doc.org/core-2.2.2/[category].html#method-c-[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n php: {\n order: 5,\n function_title_template: \"[language]'s [function] in JavaScript\",\n human: 'PHP',\n packageType: 'extension',\n inspiration_urls: [\n '<a href=\"https://php.net/manual/en/book.strings.php\">the PHP string documentation</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/string.c#L5338\">the PHP string source</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/tests/strings/str_pad_variation1.phpt\">a PHP str_pad test</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://php.net/manual/en/function.[functiondashed].php\">[language]\\'s [function]</a> looks like.',\n alias: [\n '/categories/',\n '/categories/array/',\n '/categories/bc/',\n '/categories/ctype/',\n '/categories/datetime/',\n '/categories/exec/',\n '/categories/filesystem/',\n '/categories/funchand/',\n '/categories/i18n/',\n '/categories/index/',\n '/categories/info/',\n '/categories/json/',\n '/categories/math/',\n '/categories/misc/',\n '/categories/net/',\n '/categories/network/',\n '/categories/pcre/',\n '/categories/strings/',\n '/categories/url/',\n '/categories/var/',\n '/categories/xdiff/',\n '/categories/xml/',\n '/functions/index/',\n '/functions/',\n '/packages/',\n '/packages/index/',\n ],\n },\n }\n\n this.allowSkip = argv.indexOf('--noskip') === -1\n\n this._reindexBuffer = {}\n this._injectwebBuffer = {}\n }\n\n injectweb(cb) {\n const self = this\n this._runFunctionOnAll(this._injectwebOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexHtml in self._injectwebBuffer) {\n debug('writing: ' + indexHtml)\n fs.writeFileSync(indexHtml, self._injectwebBuffer[indexHtml], 'utf-8')\n }\n })\n }\n\n reindex(cb) {\n const self = this\n self._reindexBuffer = {}\n self._runFunctionOnAll(self._reindexOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexJs in self._reindexBuffer) {\n const requires = self._reindexBuffer[indexJs]\n requires.sort()\n debug('writing: ' + indexJs)\n fs.writeFileSync(indexJs, requires.join('\\n') + '\\n', 'utf-8')\n }\n })\n }\n\n writetests(cb) {\n this._runFunctionOnAll(this._writetestOne, cb)\n }\n\n _runFunctionOnAll(runFunc, cb) {\n const self = this\n\n const q = async.queue(function (fullpath, callback) {\n self._load.bind(self, fullpath, {}, function (err, params) {\n if (err) {\n return callback(err)\n }\n\n runFunc.bind(self, params, callback)()\n })()\n }, self.concurrency)\n\n debug({\n pattern: self.pattern,\n })\n const files = globby.sync(self.pattern)\n\n q.push(files)\n\n q.drain = cb\n }\n\n _reindexOne(params, cb) {\n const fullpath = this.__src + '/' + params.filepath\n const dir = path.dirname(fullpath)\n const basefile = path.basename(fullpath, '.js')\n const indexJs = dir + '/index.js'\n\n let module = basefile\n if (basefile === 'Index2') {\n module = 'Index'\n }\n\n if (!this._reindexBuffer[indexJs]) {\n this._reindexBuffer[indexJs] = []\n }\n\n const line = 'module.exports.' + module + \" = require('./\" + basefile + \"')\"\n this._reindexBuffer[indexJs].push(line)\n return cb(null)\n }\n\n _injectwebOne(params, cb) {\n const authors = {}\n this.authorKeys.forEach(function (key) {\n if (params.headKeys[key]) {\n authors[key] = _.flattenDeep(params.headKeys[key])\n }\n })\n\n const langPath = [this.__root, '/website/source/', params.language].join('')\n\n const langIndexPath = langPath + '/index.html'\n const catPath = langPath + '/' + params.category\n const catIndexPath = catPath + '/' + 'index.html'\n const funcPath = catPath + '/' + params.func_name + '.html'\n\n if (!this._injectwebBuffer[langIndexPath]) {\n let langTitle = ''\n langTitle += this.langDefaults[params.language].human + ' '\n langTitle += this.langDefaults[params.language].packageType + 's '\n langTitle += ' in JavaScript'\n\n const langData = Object.assign({}, this.langDefaults[params.language], {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n type: 'language',\n layout: 'language',\n language: params.language,\n title: langTitle,\n })\n this._injectwebBuffer[langIndexPath] = '---' + '\\n' + YAML.dump(langData).trim() + '\\n' + '---' + '\\n'\n }\n\n if (!this._injectwebBuffer[catIndexPath]) {\n let catTitle = ''\n catTitle += this.langDefaults[params.language].human + \"'s \"\n catTitle += params.category + ' '\n catTitle += this.langDefaults[params.language].packageType + ' '\n catTitle += ' in JavaScript'\n\n const catData = {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n type: 'category',\n layout: 'category',\n language: params.language,\n category: params.category,\n title: catTitle,\n }\n this._injectwebBuffer[catIndexPath] = '---' + '\\n' + YAML.dump(catData).trim() + '\\n' + '---' + '\\n'\n }\n\n const functionTitle = this.langDefaults[params.language].function_title_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n const functionDescription = this.langDefaults[params.language].function_description_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n const funcData = {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n examples: (params.headKeys.example || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n returns: (params.headKeys.returns || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n dependencies: [],\n authors: authors || {},\n notes: (params.headKeys.note || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n type: 'function',\n layout: 'function',\n title: functionTitle,\n description: functionDescription,\n function: params.func_name,\n category: params.category,\n language: params.language,\n permalink: params.language + '/' + params.category + '/' + params.func_name + '/',\n alias: [\n '/functions/' + params.language + '/' + params.func_name + '/',\n '/functions/' + params.category + '/' + params.func_name + '/',\n '/' + params.language + '/' + params.func_name + '/',\n ],\n }\n\n if (params.language === 'php') {\n funcData.alias.push('/functions/' + params.func_name + '/')\n }\n\n let buf = '---' + '\\n' + YAML.dump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n fsPromises.mkdir(path.dirname(funcPath), { recursive: true }).then(\n function () {\n fs.writeFile(funcPath, buf, 'utf-8', cb)\n },\n function (err) {\n throw new Error('Could not mkdir for ' + funcPath + '. ' + err)\n },\n )\n }\n\n _addRequire(name, relativeSrcForTest) {\n return [\n 'var ',\n name,\n \" = require('\",\n relativeSrcForTest,\n \"') // eslint-disable-line no-unused-vars,camelcase\",\n ].join('')\n }\n\n _writetestOne(params, cb) {\n const self = this\n\n if (!params.func_name) {\n throw new Error('No func_name in ' + JSON.stringify(params))\n }\n if (!params.headKeys) {\n throw new Error('No headKeys in ' + params.func_name)\n }\n if (!params.headKeys.example) {\n throw new Error('No example in ' + params.func_name)\n }\n\n const basename = path.basename(params.filepath)\n const subdir = path.dirname(params.filepath)\n const testpath = this.__test + '/languages/' + subdir + '/test-' + basename\n const testdir = path.dirname(testpath)\n const relativeSrcForTestDir = path.relative(testdir, self.__src)\n const relativeTestFileForRoot = path.relative(self.__root, testpath)\n\n // console.log(relativeSrcForTestDir)\n // process.exit(1)\n\n let testProps = ''\n if (params.headKeys.test) {\n testProps = params.headKeys.test[0][0]\n }\n\n let describeSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-all') !== -1) {\n describeSkip = '.skip'\n }\n\n const codez = []\n\n codez.push('// warning: This file is auto generated by `yarn build:tests`')\n codez.push('// Do not edit by hand!')\n\n // Add globals\n for (const global in self.globals) {\n codez.push('var ' + global + ' = ' + self.globals[global])\n }\n\n // Set timezone for testing dates\n // Not ideal: https://stackoverflow.com/questions/8083410/how-to-set-default-timezone-in-node-js\n codez.push(\"process.env.TZ = 'UTC'\")\n\n codez.push('var ' + 'expect' + \" = require('chai').expect\")\n\n // Add language-wide dependencies\n // @todo: It would be great if we could remove this\n if (params.language === 'php') {\n codez.push(self._addRequire('ini_set', relativeSrcForTestDir + '/' + 'php/info/ini_set'))\n codez.push(self._addRequire('ini_get', relativeSrcForTestDir + '/' + 'php/info/ini_get'))\n if (params.func_name === 'localeconv') {\n codez.push(self._addRequire('setlocale', relativeSrcForTestDir + '/' + 'php/strings/setlocale'))\n }\n if (params.func_name === 'i18n_loc_get_default') {\n codez.push(\n self._addRequire('i18n_loc_set_default', relativeSrcForTestDir + '/' + 'php/i18n/i18n_loc_set_default'),\n )\n }\n }\n\n // Add the main function to test\n codez.push(self._addRequire(params.func_name, relativeSrcForTestDir + '/' + params.filepath))\n\n codez.push('')\n\n codez.push(\n [\n 'describe',\n describeSkip,\n \"('src/\",\n params.filepath,\n ' (tested in ',\n relativeTestFileForRoot,\n \")', function () {\",\n ].join(''),\n )\n\n // Run each example\n for (const i in params.headKeys.example) {\n if (!params.headKeys.returns[i] || !params.headKeys.returns[i].length) {\n throw new Error('There is no return for example ' + i, test, params)\n }\n\n const humanIndex = parseInt(i, 10) + 1\n let itSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-' + humanIndex) !== -1) {\n itSkip = '.skip'\n }\n\n codez.push([' it', itSkip, \"('should pass example \", humanIndex, \"', function (done) {\"].join(''))\n\n const body = []\n\n const testExpected = params.headKeys.returns[i].join('\\n')\n\n body.push('var expected = ' + testExpected)\n\n // Execute line by line (see date.js why)\n // We need result be the last result of the example code\n for (const j in params.headKeys.example[i]) {\n if (parseInt(j, 10) === params.headKeys.example[i].length - 1) {\n // last action gets saved\n body.push('var result = ' + params.headKeys.example[i][j].replace('var $result = ', ''))\n } else {\n body.push(params.headKeys.example[i][j])\n }\n }\n\n body.push('expect(result).to.deep.equal(expected)')\n body.push('done()')\n\n codez.push(indentString(body.join('\\n'), ' ', 4))\n\n codez.push(' })')\n }\n\n codez.push('})')\n codez.push('')\n\n const code = codez.join('\\n')\n\n // Write to disk\n fsPromises.mkdir(testdir, { recursive: true }).then(\n function () {\n debug('writing: ' + testpath)\n fs.writeFile(testpath, code, 'utf-8', cb)\n },\n function (err) {\n throw new Error(err)\n },\n )\n }\n\n // Environment-specific file opener. function name needs to\n // be translated to code. The difficulty is in finding the\n // category.\n _opener(fileOrName, requesterParams, cb) {\n const self = this\n let pattern\n\n const language = requesterParams.language || '*'\n\n if (path.basename(fileOrName, '.js').indexOf('.') !== -1) {\n // periods in the basename, like: unicode.utf8.RuneCountInString or strings.sprintf\n pattern = self.__src + '/' + language + '/' + fileOrName.replace(/\\./g, '/') + '.js'\n } else if (fileOrName.indexOf('/') === -1) {\n // no slashes, like: sprintf\n pattern = self.__src + '/' + language + '/*/' + fileOrName + '.js'\n } else if (fileOrName.substr(0, 1) === '/') {\n // absolute path, like: /Users/john/code/locutus/php/strings/sprintf.js\n pattern = fileOrName\n } else {\n // relative path, like: php/strings/sprintf.js\n pattern = self.__src + '/' + fileOrName\n }\n\n pattern = pattern.replace('golang/strings/Index.js', 'golang/strings/Index2.js')\n debug('loading: ' + pattern)\n const files = globby.sync(pattern, {})\n\n if (files.length !== 1) {\n const msg = `Found ${files.length} occurances of ${fileOrName} via pattern: ${pattern}`\n return cb(new Error(msg))\n }\n\n const filepath = files[0]\n\n if (path.basename(filepath) === 'index.js') {\n return cb(null)\n }\n\n if (!filepath) {\n return cb(new Error('Could not find ' + pattern))\n }\n\n fs.readFile(filepath, 'utf-8', function (err, code) {\n if (err) {\n return cb(new Error('Error while opening ' + filepath + '. ' + err))\n }\n return cb(null, filepath, code)\n })\n }\n\n _load(fileOrName, requesterParams, cb) {\n const self = this\n self._opener(fileOrName, requesterParams, function (err, fullpath, code) {\n if (err) {\n return cb(err)\n }\n\n const filepath = path.relative(self.__src, fullpath)\n self._parse(filepath, code, cb)\n })\n }\n\n _findDependencies(fileOrName, requesterParams, dependencies, cb) {\n const self = this\n\n if (!requesterParams.headKeys['depends on'] || !requesterParams.headKeys['depends on'].length) {\n if (cb) {\n cb(null, {})\n }\n return\n }\n\n let i\n let depCodePath\n let loaded = 0\n for (i in requesterParams.headKeys['depends on']) {\n depCodePath = requesterParams.headKeys['depends on'][i][0]\n\n self._load(depCodePath, requesterParams, function (err, params) {\n if (err) {\n return cb(err)\n }\n\n dependencies[depCodePath] = params\n self._findDependencies(depCodePath, params, dependencies)\n\n if (cb && ++loaded === requesterParams.headKeys['depends on'].length) {\n cb(null, dependencies)\n }\n })\n }\n }\n\n _parse(filepath, code, cb) {\n if (!code) {\n return cb(new Error('Unable to parse ' + filepath + '. Received no code'))\n }\n\n if (filepath.indexOf('/') === -1) {\n return cb(new Error(\"Parse only accepts relative filepaths. Received: '\" + filepath + \"'\"))\n }\n\n const parts = filepath.split('/')\n const language = parts.shift()\n const codepath = parts.join('.')\n const name = parts.pop()\n const category = parts.join('.')\n\n const ast = esprima.parseScript(code, { comment: true, loc: true, range: true })\n\n // find module.exports in the code\n const moduleExports = ast.body.filter((node) => {\n try {\n const leftArg = node.expression.left\n const rightArg = node.expression.right\n\n return (\n leftArg.object.name === 'module' &&\n leftArg.property.name === 'exports' &&\n rightArg.type === 'FunctionExpression' &&\n rightArg.id.type === 'Identifier' &&\n !!rightArg.id.name\n )\n } catch (err) {\n return false\n }\n })\n\n // if file contains more than one export, fail\n if (moduleExports.length !== 1) {\n return cb(Error(`File ${filepath} is allowed to contain exactly one module.exports`))\n }\n\n // get the only export\n const exp = moduleExports[0]\n\n // look for function name and param list\n const funcName = exp.expression.right.id.name\n const funcParams = exp.expression.right.params.map((p) => p.name)\n\n // remember the lines where the function is defined\n const funcLoc = exp.expression.right.loc\n\n // since comments are not included in the AST\n // but are offered in ast.comments\n // remember the location of first function body statement/expression\n const firstFuncBodyElementLoc = exp.expression.right.body.body[0].loc\n\n // get all line comments which are located between function signature definition\n // and first function body element\n const headComments = ast.comments\n .filter(\n (c) =>\n c.type === 'Line' &&\n c.loc.start.line >= funcLoc.start.line &&\n c.loc.end.line <= firstFuncBodyElementLoc.start.line,\n )\n .map((c) => c.value.trim())\n\n if (headComments.length === 0) {\n const msg = `Unable to parse ${filepath}. Did not find any comments in function definition`\n return cb(new Error(msg))\n }\n\n const headKeys = this._headKeys(headComments)\n\n const params = {\n headKeys,\n name,\n filepath,\n codepath,\n code,\n language,\n category,\n func_name: funcName,\n func_arguments: funcParams,\n }\n\n this._findDependencies(filepath, params, {}, function (err, dependencies) {\n if (err) {\n return cb(err)\n }\n\n params.dependencies = dependencies\n return cb(null, params)\n })\n }\n\n _headKeys(headLines) {\n let i\n const keys = {}\n let match = []\n let dmatch = []\n let key = ''\n let val = ''\n let num = 0\n\n for (i in headLines) {\n if (!(match = headLines[i].match(/^\\s*\\W?\\s*([a-z 0-9]+)\\s*:\\s*(.*)\\s*$/))) {\n continue\n }\n key = match[1]\n val = match[2]\n\n if ((dmatch = key.match(/^(\\w+)\\s+(\\d+)$/))) {\n // Things like examples and notes can be grouped\n key = dmatch[1]\n num = dmatch[2] - 1\n } else {\n num = 0\n }\n\n if (!keys[key]) {\n keys[key] = []\n }\n if (!keys[key][num]) {\n keys[key][num] = []\n }\n keys[key][num].push(val)\n }\n\n return keys\n }\n}\n\nmodule.exports = Util\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/_util/util.js"],"names":["globby","require","path","fs","fsPromises","promises","async","YAML","debug","indentString","_","esprima","Util","argv","__src","dirname","__dirname","__root","__test","globals","pattern","concurrency","authorKeys","langDefaults","c","order","function_title_template","human","packageType","inspiration_urls","function_description_template","golang","python","ruby","php","alias","allowSkip","indexOf","_reindexBuffer","_injectwebBuffer","cb","self","_runFunctionOnAll","_injectwebOne","err","indexHtml","writeFileSync","_reindexOne","indexJs","requires","sort","join","_writetestOne","runFunc","q","queue","fullpath","callback","_load","bind","params","files","sync","push","drain","filepath","dir","basefile","basename","module","line","authors","forEach","key","headKeys","flattenDeep","langPath","language","langIndexPath","catPath","category","catIndexPath","funcPath","func_name","langTitle","langData","Object","assign","warning","type","layout","title","dump","trim","catTitle","catData","functionTitle","replace","functionDescription","funcData","examples","example","map","lines","i","returns","dependencies","notes","note","description","function","permalink","buf","code","mkdir","recursive","then","writeFile","Error","name","relativeSrcForTest","JSON","stringify","subdir","testpath","testdir","relativeSrcForTestDir","relative","relativeTestFileForRoot","testProps","test","describeSkip","codez","global","_addRequire","length","humanIndex","parseInt","itSkip","body","testExpected","j","fileOrName","requesterParams","substr","msg","readFile","_opener","_parse","depCodePath","loaded","_findDependencies","parts","split","shift","codepath","pop","ast","parseScript","comment","loc","range","moduleExports","filter","node","leftArg","expression","left","rightArg","right","object","property","id","exp","funcName","funcParams","p","funcLoc","firstFuncBodyElementLoc","headComments","comments","start","end","value","_headKeys","func_arguments","headLines","keys","match","dmatch","val","num","exports"],"mappings":"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","file":"util.js","sourcesContent":["const globby = require('globby')\nconst path = require('path')\nconst fs = require('fs')\nconst fsPromises = fs.promises\nconst async = require('async')\nconst YAML = require('js-yaml')\nconst debug = require('debug')('locutus:utils')\nconst indentString = require('indent-string')\nconst _ = require('lodash')\nconst esprima = require('esprima')\n\nclass Util {\n constructor(argv) {\n if (!argv) {\n argv = []\n }\n this.__src = path.dirname(__dirname)\n this.__root = path.dirname(path.dirname(__dirname))\n this.__test = path.dirname(path.dirname(__dirname)) + '/test'\n\n this.globals = {}\n\n this.pattern = [this.__src + '/**/**/*.js', '!**/index.js', '!**/_util/**']\n this.concurrency = 8\n this.authorKeys = [\n 'original by',\n 'improved by',\n 'reimplemented by',\n 'parts by',\n 'bugfixed by',\n 'revised by',\n 'input by',\n ]\n\n this.langDefaults = {\n c: {\n order: 1,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'C',\n packageType: 'header file',\n inspiration_urls: [\n '<a href=\"https://en.cppreference.com/w/c/numeric/math\">the C math.h documentation</a>',\n '<a href=\"https://sourceware.org/git/?p=glibc.git;a=tree;f=math;hb=HEAD\">the C math.h source</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://en.cppreference.com/w/c/numeric/[category]/[function]\">[language]\\'s [function] found in the [category].h header file</a> looks like.',\n },\n golang: {\n order: 2,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Go',\n packageType: 'package',\n inspiration_urls: [\n '<a href=\"https://golang.org/pkg/strings/\">Go strings documentation</a>',\n '<a href=\"https://golang.org/src/strings/strings.go\">Go strings source</a>',\n '<a href=\"https://golang.org/src/strings/example_test.go\">Go strings examples source</a>',\n '<a href=\"https://gophersjs.com\">GopherJS</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://golang.org/pkg/[category]/#[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n python: {\n order: 3,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Python',\n packageType: 'module',\n inspiration_urls: [\n '<a href=\"https://docs.python.org/3/library/string.html\">the Python 3 standard library string page</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://docs.python.org/3/library/[category].html#[category].[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n ruby: {\n order: 4,\n function_title_template: \"[language]'s [category].[function] in JavaScript\",\n human: 'Ruby',\n packageType: 'module',\n inspiration_urls: ['<a href=\"https://ruby-doc.org/core-2.2.2/Math.html\">the Ruby core documentation</a>'],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://ruby-doc.org/core-2.2.2/[category].html#method-c-[function]\">[language]\\'s [category].[function]</a> looks like.',\n },\n php: {\n order: 5,\n function_title_template: \"[language]'s [function] in JavaScript\",\n human: 'PHP',\n packageType: 'extension',\n inspiration_urls: [\n '<a href=\"https://php.net/manual/en/book.strings.php\">the PHP string documentation</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/string.c#L5338\">the PHP string source</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/tests/strings/str_pad_variation1.phpt\">a PHP str_pad test</a>',\n ],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://php.net/manual/en/function.[functiondashed].php\">[language]\\'s [function]</a> looks like.',\n alias: [\n '/categories/',\n '/categories/array/',\n '/categories/bc/',\n '/categories/ctype/',\n '/categories/datetime/',\n '/categories/exec/',\n '/categories/filesystem/',\n '/categories/funchand/',\n '/categories/i18n/',\n '/categories/index/',\n '/categories/info/',\n '/categories/json/',\n '/categories/math/',\n '/categories/misc/',\n '/categories/net/',\n '/categories/network/',\n '/categories/pcre/',\n '/categories/strings/',\n '/categories/url/',\n '/categories/var/',\n '/categories/xdiff/',\n '/categories/xml/',\n '/functions/index/',\n '/functions/',\n '/packages/',\n '/packages/index/',\n ],\n },\n }\n\n this.allowSkip = argv.indexOf('--noskip') === -1\n\n this._reindexBuffer = {}\n this._injectwebBuffer = {}\n }\n\n injectweb(cb) {\n const self = this\n this._runFunctionOnAll(this._injectwebOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexHtml in self._injectwebBuffer) {\n debug('writing: ' + indexHtml)\n fs.writeFileSync(indexHtml, self._injectwebBuffer[indexHtml], 'utf-8')\n }\n })\n }\n\n reindex(cb) {\n const self = this\n self._reindexBuffer = {}\n self._runFunctionOnAll(self._reindexOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexJs in self._reindexBuffer) {\n const requires = self._reindexBuffer[indexJs]\n requires.sort()\n debug('writing: ' + indexJs)\n fs.writeFileSync(indexJs, requires.join('\\n') + '\\n', 'utf-8')\n }\n })\n }\n\n writetests(cb) {\n this._runFunctionOnAll(this._writetestOne, cb)\n }\n\n _runFunctionOnAll(runFunc, cb) {\n const self = this\n\n const q = async.queue(function (fullpath, callback) {\n self._load.bind(self, fullpath, {}, function (err, params) {\n if (err) {\n return callback(err)\n }\n\n runFunc.bind(self, params, callback)()\n })()\n }, self.concurrency)\n\n debug({\n pattern: self.pattern,\n })\n const files = globby.sync(self.pattern)\n\n q.push(files)\n\n q.drain = cb\n }\n\n _reindexOne(params, cb) {\n const fullpath = this.__src + '/' + params.filepath\n const dir = path.dirname(fullpath)\n const basefile = path.basename(fullpath, '.js')\n const indexJs = dir + '/index.js'\n\n let module = basefile\n if (basefile === 'Index2') {\n module = 'Index'\n }\n\n if (!this._reindexBuffer[indexJs]) {\n this._reindexBuffer[indexJs] = []\n }\n\n const line = 'module.exports.' + module + \" = require('./\" + basefile + \"')\"\n this._reindexBuffer[indexJs].push(line)\n return cb(null)\n }\n\n _injectwebOne(params, cb) {\n const authors = {}\n this.authorKeys.forEach(function (key) {\n if (params.headKeys[key]) {\n authors[key] = _.flattenDeep(params.headKeys[key])\n }\n })\n\n const langPath = [this.__root, '/website/source/', params.language].join('')\n\n const langIndexPath = langPath + '/index.html'\n const catPath = langPath + '/' + params.category\n const catIndexPath = catPath + '/' + 'index.html'\n const funcPath = catPath + '/' + params.func_name + '.html'\n\n if (!this._injectwebBuffer[langIndexPath]) {\n let langTitle = ''\n langTitle += this.langDefaults[params.language].human + ' '\n langTitle += this.langDefaults[params.language].packageType + 's '\n langTitle += ' in JavaScript'\n\n const langData = Object.assign({}, this.langDefaults[params.language], {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n type: 'language',\n layout: 'language',\n language: params.language,\n title: langTitle,\n })\n this._injectwebBuffer[langIndexPath] = '---' + '\\n' + YAML.dump(langData).trim() + '\\n' + '---' + '\\n'\n }\n\n if (!this._injectwebBuffer[catIndexPath]) {\n let catTitle = ''\n catTitle += this.langDefaults[params.language].human + \"'s \"\n catTitle += params.category + ' '\n catTitle += this.langDefaults[params.language].packageType + ' '\n catTitle += ' in JavaScript'\n\n const catData = {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n type: 'category',\n layout: 'category',\n language: params.language,\n category: params.category,\n title: catTitle,\n }\n this._injectwebBuffer[catIndexPath] = '---' + '\\n' + YAML.dump(catData).trim() + '\\n' + '---' + '\\n'\n }\n\n const functionTitle = this.langDefaults[params.language].function_title_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n const functionDescription = this.langDefaults[params.language].function_description_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n const funcData = {\n warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',\n examples: (params.headKeys.example || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n returns: (params.headKeys.returns || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n dependencies: [],\n authors: authors || {},\n notes: (params.headKeys.note || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n type: 'function',\n layout: 'function',\n title: functionTitle,\n description: functionDescription,\n function: params.func_name,\n category: params.category,\n language: params.language,\n permalink: params.language + '/' + params.category + '/' + params.func_name + '/',\n alias: [\n '/functions/' + params.language + '/' + params.func_name + '/',\n '/functions/' + params.category + '/' + params.func_name + '/',\n '/' + params.language + '/' + params.func_name + '/',\n ],\n }\n\n if (params.language === 'php') {\n funcData.alias.push('/functions/' + params.func_name + '/')\n }\n\n let buf = '---' + '\\n' + YAML.dump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n fsPromises.mkdir(path.dirname(funcPath), { recursive: true }).then(\n function () {\n fs.writeFile(funcPath, buf, 'utf-8', cb)\n },\n function (err) {\n throw new Error('Could not mkdir for ' + funcPath + '. ' + err)\n },\n )\n }\n\n _addRequire(name, relativeSrcForTest) {\n return [\n 'var ',\n name,\n \" = require('\",\n relativeSrcForTest,\n \"') // eslint-disable-line no-unused-vars,camelcase\",\n ].join('')\n }\n\n _writetestOne(params, cb) {\n const self = this\n\n if (!params.func_name) {\n throw new Error('No func_name in ' + JSON.stringify(params))\n }\n if (!params.headKeys) {\n throw new Error('No headKeys in ' + params.func_name)\n }\n if (!params.headKeys.example) {\n throw new Error('No example in ' + params.func_name)\n }\n\n const basename = path.basename(params.filepath)\n const subdir = path.dirname(params.filepath)\n const testpath = this.__test + '/generated/' + subdir + '/test-' + basename\n const testdir = path.dirname(testpath)\n const relativeSrcForTestDir = path.relative(testdir, self.__src)\n const relativeTestFileForRoot = path.relative(self.__root, testpath)\n\n // console.log(relativeSrcForTestDir)\n // process.exit(1)\n\n let testProps = ''\n if (params.headKeys.test) {\n testProps = params.headKeys.test[0][0]\n }\n\n let describeSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-all') !== -1) {\n describeSkip = '.skip'\n }\n\n const codez = []\n\n codez.push('// warning: This file is auto generated by `yarn build:tests`')\n codez.push('// Do not edit by hand!')\n codez.push('')\n codez.push(`'use strict'`)\n codez.push('')\n\n // Add globals\n for (const global in self.globals) {\n codez.push('var ' + global + ' = ' + self.globals[global])\n }\n\n // Set timezone for testing dates\n // Not ideal: https://stackoverflow.com/questions/8083410/how-to-set-default-timezone-in-node-js\n codez.push(\"process.env.TZ = 'UTC'\")\n\n codez.push('var ' + 'expect' + \" = require('chai').expect\")\n\n // Add language-wide dependencies\n // @todo: It would be great if we could remove this\n if (params.language === 'php') {\n codez.push(self._addRequire('ini_set', relativeSrcForTestDir + '/' + 'php/info/ini_set'))\n codez.push(self._addRequire('ini_get', relativeSrcForTestDir + '/' + 'php/info/ini_get'))\n if (params.func_name === 'localeconv') {\n codez.push(self._addRequire('setlocale', relativeSrcForTestDir + '/' + 'php/strings/setlocale'))\n }\n if (params.func_name === 'i18n_loc_get_default') {\n codez.push(\n self._addRequire('i18n_loc_set_default', relativeSrcForTestDir + '/' + 'php/i18n/i18n_loc_set_default'),\n )\n }\n }\n\n // Add the main function to test\n codez.push(self._addRequire(params.func_name, relativeSrcForTestDir + '/' + params.filepath))\n\n codez.push('')\n\n codez.push(\n [\n 'describe',\n describeSkip,\n \"('src/\",\n params.filepath,\n ' (tested in ',\n relativeTestFileForRoot,\n \")', function () {\",\n ].join(''),\n )\n\n // Run each example\n for (const i in params.headKeys.example) {\n if (!params.headKeys.returns[i] || !params.headKeys.returns[i].length) {\n throw new Error('There is no return for example ' + i, test, params)\n }\n\n const humanIndex = parseInt(i, 10) + 1\n let itSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-' + humanIndex) !== -1) {\n itSkip = '.skip'\n }\n\n codez.push([' it', itSkip, \"('should pass example \", humanIndex, \"', function (done) {\"].join(''))\n\n const body = []\n\n const testExpected = params.headKeys.returns[i].join('\\n')\n\n body.push('var expected = ' + testExpected)\n\n // Execute line by line (see date.js why)\n // We need result be the last result of the example code\n for (const j in params.headKeys.example[i]) {\n if (parseInt(j, 10) === params.headKeys.example[i].length - 1) {\n // last action gets saved\n body.push('var result = ' + params.headKeys.example[i][j].replace('var $result = ', ''))\n } else {\n body.push(params.headKeys.example[i][j])\n }\n }\n\n body.push('expect(result).to.deep.equal(expected)')\n body.push('done()')\n\n codez.push(indentString(body.join('\\n'), ' ', 4))\n\n codez.push(' })')\n }\n\n codez.push('})')\n codez.push('')\n\n const code = codez.join('\\n')\n\n // Write to disk\n fsPromises.mkdir(testdir, { recursive: true }).then(\n function () {\n debug('writing: ' + testpath)\n fs.writeFile(testpath, code, 'utf-8', cb)\n },\n function (err) {\n throw new Error(err)\n },\n )\n }\n\n // Environment-specific file opener. function name needs to\n // be translated to code. The difficulty is in finding the\n // category.\n _opener(fileOrName, requesterParams, cb) {\n const self = this\n let pattern\n\n const language = requesterParams.language || '*'\n\n if (path.basename(fileOrName, '.js').indexOf('.') !== -1) {\n // periods in the basename, like: unicode.utf8.RuneCountInString or strings.sprintf\n pattern = self.__src + '/' + language + '/' + fileOrName.replace(/\\./g, '/') + '.js'\n } else if (fileOrName.indexOf('/') === -1) {\n // no slashes, like: sprintf\n pattern = self.__src + '/' + language + '/*/' + fileOrName + '.js'\n } else if (fileOrName.substr(0, 1) === '/') {\n // absolute path, like: /Users/john/code/locutus/php/strings/sprintf.js\n pattern = fileOrName\n } else {\n // relative path, like: php/strings/sprintf.js\n pattern = self.__src + '/' + fileOrName\n }\n\n pattern = pattern.replace('golang/strings/Index.js', 'golang/strings/Index2.js')\n debug('loading: ' + pattern)\n const files = globby.sync(pattern, {})\n\n if (files.length !== 1) {\n const msg = `Found ${files.length} occurances of ${fileOrName} via pattern: ${pattern}`\n return cb(new Error(msg))\n }\n\n const filepath = files[0]\n\n if (path.basename(filepath) === 'index.js') {\n return cb(null)\n }\n\n if (!filepath) {\n return cb(new Error('Could not find ' + pattern))\n }\n\n fs.readFile(filepath, 'utf-8', function (err, code) {\n if (err) {\n return cb(new Error('Error while opening ' + filepath + '. ' + err))\n }\n return cb(null, filepath, code)\n })\n }\n\n _load(fileOrName, requesterParams, cb) {\n const self = this\n self._opener(fileOrName, requesterParams, function (err, fullpath, code) {\n if (err) {\n return cb(err)\n }\n\n const filepath = path.relative(self.__src, fullpath)\n self._parse(filepath, code, cb)\n })\n }\n\n _findDependencies(fileOrName, requesterParams, dependencies, cb) {\n const self = this\n\n if (!requesterParams.headKeys['depends on'] || !requesterParams.headKeys['depends on'].length) {\n if (cb) {\n cb(null, {})\n }\n return\n }\n\n let i\n let depCodePath\n let loaded = 0\n for (i in requesterParams.headKeys['depends on']) {\n depCodePath = requesterParams.headKeys['depends on'][i][0]\n\n self._load(depCodePath, requesterParams, function (err, params) {\n if (err) {\n return cb(err)\n }\n\n dependencies[depCodePath] = params\n self._findDependencies(depCodePath, params, dependencies)\n\n if (cb && ++loaded === requesterParams.headKeys['depends on'].length) {\n cb(null, dependencies)\n }\n })\n }\n }\n\n _parse(filepath, code, cb) {\n if (!code) {\n return cb(new Error('Unable to parse ' + filepath + '. Received no code'))\n }\n\n if (filepath.indexOf('/') === -1) {\n return cb(new Error(\"Parse only accepts relative filepaths. Received: '\" + filepath + \"'\"))\n }\n\n const parts = filepath.split('/')\n const language = parts.shift()\n const codepath = parts.join('.')\n const name = parts.pop()\n const category = parts.join('.')\n\n const ast = esprima.parseScript(code, { comment: true, loc: true, range: true })\n\n // find module.exports in the code\n const moduleExports = ast.body.filter((node) => {\n try {\n const leftArg = node.expression.left\n const rightArg = node.expression.right\n\n return (\n leftArg.object.name === 'module' &&\n leftArg.property.name === 'exports' &&\n rightArg.type === 'FunctionExpression' &&\n rightArg.id.type === 'Identifier' &&\n !!rightArg.id.name\n )\n } catch (err) {\n return false\n }\n })\n\n // if file contains more than one export, fail\n if (moduleExports.length !== 1) {\n return cb(Error(`File ${filepath} is allowed to contain exactly one module.exports`))\n }\n\n // get the only export\n const exp = moduleExports[0]\n\n // look for function name and param list\n const funcName = exp.expression.right.id.name\n const funcParams = exp.expression.right.params.map((p) => p.name)\n\n // remember the lines where the function is defined\n const funcLoc = exp.expression.right.loc\n\n // since comments are not included in the AST\n // but are offered in ast.comments\n // remember the location of first function body statement/expression\n const firstFuncBodyElementLoc = exp.expression.right.body.body[0].loc\n\n // get all line comments which are located between function signature definition\n // and first function body element\n const headComments = ast.comments\n .filter(\n (c) =>\n c.type === 'Line' &&\n c.loc.start.line >= funcLoc.start.line &&\n c.loc.end.line <= firstFuncBodyElementLoc.start.line,\n )\n .map((c) => c.value.trim())\n\n if (headComments.length === 0) {\n const msg = `Unable to parse ${filepath}. Did not find any comments in function definition`\n return cb(new Error(msg))\n }\n\n const headKeys = this._headKeys(headComments)\n\n const params = {\n headKeys,\n name,\n filepath,\n codepath,\n code,\n language,\n category,\n func_name: funcName,\n func_arguments: funcParams,\n }\n\n this._findDependencies(filepath, params, {}, function (err, dependencies) {\n if (err) {\n return cb(err)\n }\n\n params.dependencies = dependencies\n return cb(null, params)\n })\n }\n\n _headKeys(headLines) {\n let i\n const keys = {}\n let match = []\n let dmatch = []\n let key = ''\n let val = ''\n let num = 0\n\n for (i in headLines) {\n if (!(match = headLines[i].match(/^\\s*\\W?\\s*([a-z 0-9]+)\\s*:\\s*(.*)\\s*$/))) {\n continue\n }\n key = match[1]\n val = match[2]\n\n if ((dmatch = key.match(/^(\\w+)\\s+(\\d+)$/))) {\n // Things like examples and notes can be grouped\n key = dmatch[1]\n num = dmatch[2] - 1\n } else {\n num = 0\n }\n\n if (!keys[key]) {\n keys[key] = []\n }\n if (!keys[key][num]) {\n keys[key][num] = []\n }\n keys[key][num].push(val)\n }\n\n return keys\n }\n}\n\nmodule.exports = Util\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "locutus",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.31",
|
|
4
4
|
"description": "Locutus other languages' standard libraries to JavaScript for fun and educational purposes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"php",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"browser:watch": "budo test/browser/app.js --live --serve test/browser/bundle.js",
|
|
31
31
|
"build:dist": "babel src --out-dir dist --source-maps && cp package.json dist/",
|
|
32
32
|
"build:indices": "babel-node src/_util/cli.js reindex",
|
|
33
|
-
"build:tests:noskip": "rimraf test/
|
|
34
|
-
"build:tests": "rimraf test/
|
|
33
|
+
"build:tests:noskip": "rimraf test/generated && babel-node src/_util/cli.js writetests --noskip",
|
|
34
|
+
"build:tests": "rimraf test/generated && babel-node src/_util/cli.js writetests",
|
|
35
35
|
"build": "npm-run-all 'build:*'",
|
|
36
36
|
"injectweb": "rimraf website/source/{c,golang,php,python,ruby} && babel-node src/_util/cli.js injectweb",
|
|
37
37
|
"fix:js": "DEBUG=eslint:cli-engine eslint --fix --quiet --ext .js,.jsx,.ts,.tsx .",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"lint:js": "eslint --ext .js,.jsx,.ts,.tsx .",
|
|
43
43
|
"lint": "npm-run-all --parallel 'lint:**'",
|
|
44
44
|
"playground:start": "cd test/browser && babel-node server.js",
|
|
45
|
-
"test:languages:noskip": "yarn build:tests:noskip && cross-env DEBUG='locutus:*' mocha --require babel-register --reporter spec
|
|
46
|
-
"test:languages": "yarn build:tests && cross-env DEBUG='locutus:*' mocha --require babel-register --reporter spec
|
|
45
|
+
"test:languages:noskip": "yarn build:tests:noskip && cross-env DEBUG='locutus:*' mocha --require babel-register --reporter spec 'src/**/*.mocha.js' 'test/**/test-*.js'",
|
|
46
|
+
"test:languages": "yarn build:tests && cross-env DEBUG='locutus:*' mocha --require babel-register --reporter spec 'src/**/*.mocha.js' 'test/**/test-*.js'",
|
|
47
47
|
"test:module": "babel-node test/module/module.js",
|
|
48
48
|
"test:util": "mocha --require babel-register --reporter spec test/util/",
|
|
49
49
|
"test": "npm-run-all test:languages test:util test:module",
|
|
@@ -17,6 +17,8 @@ module.exports = function array_multisort(arr) {
|
|
|
17
17
|
// example 3: var $president = [ 39, 6, 5, 10, 4, 35, 2 ]
|
|
18
18
|
// example 3: array_multisort($firstnames, 'SORT_DESC', 'SORT_STRING', $lastnames, 'SORT_ASC', 'SORT_STRING', $president, 'SORT_NUMERIC')
|
|
19
19
|
// returns 3: true
|
|
20
|
+
// example 4: array_multisort(["productIds[]", "_"], 'SORT_ASC', ["productIds[]=977385529", "_=1502965788347"])
|
|
21
|
+
// returns 4: true
|
|
20
22
|
// note 1: flags: Translation table for sort arguments.
|
|
21
23
|
// note 1: Each argument turns on certain bits in the flag byte through addition.
|
|
22
24
|
// note 1: bits: HGFE DCBA
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/array/array_multisort.js"],"names":["module","exports","array_multisort","arr","g","i","j","k","l","sal","vkey","elIndex","lastSorts","tmpArray","zlast","sortFlag","thingsToSort","nLastSort","lastSort","args","arguments","flags","SORT_REGULAR","SORT_NUMERIC","SORT_STRING","SORT_ASC","SORT_DESC","sortDuplicator","a","b","shift","sortFunctions","push","sortArrs","sortKeys","Object","prototype","toString","call","hasOwnProperty","arrMainLength","length","sortComponents","argl","lFlag","pop","splice","sFunction","slice","sort","concat"],"mappings":"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","file":"array_multisort.js","sourcesContent":["module.exports = function array_multisort(arr) {\n // discuss at: https://locutus.io/php/array_multisort/\n // original by: Theriault (https://github.com/Theriault)\n // improved by: Oleg Andreyev (https://github.com/oleg-andreyev)\n // example 1: array_multisort([1, 2, 1, 2, 1, 2], [1, 2, 3, 4, 5, 6])\n // returns 1: true\n // example 2: var $characters = {A: 'Edward', B: 'Locke', C: 'Sabin', D: 'Terra', E: 'Edward'}\n // example 2: var $jobs = {A: 'Warrior', B: 'Thief', C: 'Monk', D: 'Mage', E: 'Knight'}\n // example 2: array_multisort($characters, 'SORT_DESC', 'SORT_STRING', $jobs, 'SORT_ASC', 'SORT_STRING')\n // returns 2: true\n // example 3: var $lastnames = [ 'Carter','Adams','Monroe','Tyler','Madison','Kennedy','Adams']\n // example 3: var $firstnames = ['James', 'John' ,'James', 'John', 'James', 'John', 'John']\n // example 3: var $president = [ 39, 6, 5, 10, 4, 35, 2 ]\n // example 3: array_multisort($firstnames, 'SORT_DESC', 'SORT_STRING', $lastnames, 'SORT_ASC', 'SORT_STRING', $president, 'SORT_NUMERIC')\n // returns 3: true\n // note 1: flags: Translation table for sort arguments.\n // note 1: Each argument turns on certain bits in the flag byte through addition.\n // note 1: bits: HGFE DCBA\n // note 1: args: Holds pointer to arguments for reassignment\n\n let g\n let i\n let j\n let k\n let l\n let sal\n let vkey\n let elIndex\n let lastSorts\n let tmpArray\n let zlast\n\n const sortFlag = [0]\n const thingsToSort = []\n let nLastSort = []\n let lastSort = []\n // possibly redundant\n const args = arguments\n\n const flags = {\n SORT_REGULAR: 16,\n SORT_NUMERIC: 17,\n SORT_STRING: 18,\n SORT_ASC: 32,\n SORT_DESC: 40,\n }\n\n const sortDuplicator = function (a, b) {\n return nLastSort.shift()\n }\n\n const sortFunctions = [\n [\n function (a, b) {\n lastSort.push(a > b ? 1 : a < b ? -1 : 0)\n return a > b ? 1 : a < b ? -1 : 0\n },\n function (a, b) {\n lastSort.push(b > a ? 1 : b < a ? -1 : 0)\n return b > a ? 1 : b < a ? -1 : 0\n },\n ],\n [\n function (a, b) {\n lastSort.push(a - b)\n return a - b\n },\n function (a, b) {\n lastSort.push(b - a)\n return b - a\n },\n ],\n [\n function (a, b) {\n lastSort.push(a + '' > b + '' ? 1 : a + '' < b + '' ? -1 : 0)\n return a + '' > b + '' ? 1 : a + '' < b + '' ? -1 : 0\n },\n function (a, b) {\n lastSort.push(b + '' > a + '' ? 1 : b + '' < a + '' ? -1 : 0)\n return b + '' > a + '' ? 1 : b + '' < a + '' ? -1 : 0\n },\n ],\n ]\n\n const sortArrs = [[]]\n\n const sortKeys = [[]]\n\n // Store first argument into sortArrs and sortKeys if an Object.\n // First Argument should be either a Javascript Array or an Object,\n // otherwise function would return FALSE like in PHP\n if (Object.prototype.toString.call(arr) === '[object Array]') {\n sortArrs[0] = arr\n } else if (arr && typeof arr === 'object') {\n for (i in arr) {\n if (arr.hasOwnProperty(i)) {\n sortKeys[0].push(i)\n sortArrs[0].push(arr[i])\n }\n }\n } else {\n return false\n }\n\n // arrMainLength: Holds the length of the first array.\n // All other arrays must be of equal length, otherwise function would return FALSE like in PHP\n // sortComponents: Holds 2 indexes per every section of the array\n // that can be sorted. As this is the start, the whole array can be sorted.\n const arrMainLength = sortArrs[0].length\n let sortComponents = [0, arrMainLength]\n\n // Loop through all other arguments, checking lengths and sort flags\n // of arrays and adding them to the above variables.\n const argl = arguments.length\n for (j = 1; j < argl; j++) {\n if (Object.prototype.toString.call(arguments[j]) === '[object Array]') {\n sortArrs[j] = arguments[j]\n sortFlag[j] = 0\n if (arguments[j].length !== arrMainLength) {\n return false\n }\n } else if (arguments[j] && typeof arguments[j] === 'object') {\n sortKeys[j] = []\n sortArrs[j] = []\n sortFlag[j] = 0\n for (i in arguments[j]) {\n if (arguments[j].hasOwnProperty(i)) {\n sortKeys[j].push(i)\n sortArrs[j].push(arguments[j][i])\n }\n }\n if (sortArrs[j].length !== arrMainLength) {\n return false\n }\n } else if (typeof arguments[j] === 'string') {\n const lFlag = sortFlag.pop()\n // Keep extra parentheses around latter flags check\n // to avoid minimization leading to CDATA closer\n if (typeof flags[arguments[j]] === 'undefined' || ((flags[arguments[j]] >>> 4) & (lFlag >>> 4)) > 0) {\n return false\n }\n sortFlag.push(lFlag + flags[arguments[j]])\n } else {\n return false\n }\n }\n\n for (i = 0; i !== arrMainLength; i++) {\n thingsToSort.push(true)\n }\n\n // Sort all the arrays....\n for (i in sortArrs) {\n if (sortArrs.hasOwnProperty(i)) {\n lastSorts = []\n tmpArray = []\n elIndex = 0\n nLastSort = []\n lastSort = []\n\n // If there are no sortComponents, then no more sorting is neeeded.\n // Copy the array back to the argument.\n if (sortComponents.length === 0) {\n if (Object.prototype.toString.call(arguments[i]) === '[object Array]') {\n args[i] = sortArrs[i]\n } else {\n for (k in arguments[i]) {\n if (arguments[i].hasOwnProperty(k)) {\n delete arguments[i][k]\n }\n }\n sal = sortArrs[i].length\n for (j = 0, vkey = 0; j < sal; j++) {\n vkey = sortKeys[i][j]\n args[i][vkey] = sortArrs[i][j]\n }\n }\n sortArrs.splice(i, 1)\n sortKeys.splice(i, 1)\n continue\n }\n\n // Sort function for sorting. Either sorts asc or desc, regular/string or numeric.\n let sFunction = sortFunctions[sortFlag[i] & 3][(sortFlag[i] & 8) > 0 ? 1 : 0]\n\n // Sort current array.\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortArrs[i].slice(sortComponents[l], sortComponents[l + 1] + 1)\n tmpArray.sort(sFunction)\n // Is there a better way to copy an array in Javascript?\n lastSorts[l] = [].concat(lastSort)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortArrs[i][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n\n // Duplicate the sorting of the current array on future arrays.\n sFunction = sortDuplicator\n for (j in sortArrs) {\n if (sortArrs.hasOwnProperty(j)) {\n if (sortArrs[j] === sortArrs[i]) {\n continue\n }\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortArrs[j].slice(sortComponents[l], sortComponents[l + 1] + 1)\n // alert(l + ':' + nLastSort);\n nLastSort = [].concat(lastSorts[l])\n tmpArray.sort(sFunction)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortArrs[j][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n }\n }\n\n // Duplicate the sorting of the current array on array keys\n for (j in sortKeys) {\n if (sortKeys.hasOwnProperty(j)) {\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortKeys[j].slice(sortComponents[l], sortComponents[l + 1] + 1)\n nLastSort = [].concat(lastSorts[l])\n tmpArray.sort(sFunction)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortKeys[j][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n }\n }\n\n // Generate the next sortComponents\n zlast = null\n sortComponents = []\n for (j in sortArrs[i]) {\n if (sortArrs[i].hasOwnProperty(j)) {\n if (!thingsToSort[j]) {\n if (sortComponents.length & 1) {\n sortComponents.push(j - 1)\n }\n zlast = null\n continue\n }\n if (!(sortComponents.length & 1)) {\n if (zlast !== null) {\n if (sortArrs[i][j] === zlast) {\n sortComponents.push(j - 1)\n } else {\n thingsToSort[j] = false\n }\n }\n zlast = sortArrs[i][j]\n } else {\n if (sortArrs[i][j] !== zlast) {\n sortComponents.push(j - 1)\n zlast = sortArrs[i][j]\n }\n }\n }\n }\n\n if (sortComponents.length & 1) {\n sortComponents.push(j)\n }\n if (Object.prototype.toString.call(arguments[i]) === '[object Array]') {\n args[i] = sortArrs[i]\n } else {\n for (j in arguments[i]) {\n if (arguments[i].hasOwnProperty(j)) {\n delete arguments[i][j]\n }\n }\n\n sal = sortArrs[i].length\n for (j = 0, vkey = 0; j < sal; j++) {\n vkey = sortKeys[i][j]\n args[i][vkey] = sortArrs[i][j]\n }\n }\n sortArrs.splice(i, 1)\n sortKeys.splice(i, 1)\n }\n }\n return true\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/array/array_multisort.js"],"names":["module","exports","array_multisort","arr","g","i","j","k","l","sal","vkey","elIndex","lastSorts","tmpArray","zlast","sortFlag","thingsToSort","nLastSort","lastSort","args","arguments","flags","SORT_REGULAR","SORT_NUMERIC","SORT_STRING","SORT_ASC","SORT_DESC","sortDuplicator","a","b","shift","sortFunctions","push","sortArrs","sortKeys","Object","prototype","toString","call","hasOwnProperty","arrMainLength","length","sortComponents","argl","lFlag","pop","splice","sFunction","slice","sort","concat"],"mappings":"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","file":"array_multisort.js","sourcesContent":["module.exports = function array_multisort(arr) {\n // discuss at: https://locutus.io/php/array_multisort/\n // original by: Theriault (https://github.com/Theriault)\n // improved by: Oleg Andreyev (https://github.com/oleg-andreyev)\n // example 1: array_multisort([1, 2, 1, 2, 1, 2], [1, 2, 3, 4, 5, 6])\n // returns 1: true\n // example 2: var $characters = {A: 'Edward', B: 'Locke', C: 'Sabin', D: 'Terra', E: 'Edward'}\n // example 2: var $jobs = {A: 'Warrior', B: 'Thief', C: 'Monk', D: 'Mage', E: 'Knight'}\n // example 2: array_multisort($characters, 'SORT_DESC', 'SORT_STRING', $jobs, 'SORT_ASC', 'SORT_STRING')\n // returns 2: true\n // example 3: var $lastnames = [ 'Carter','Adams','Monroe','Tyler','Madison','Kennedy','Adams']\n // example 3: var $firstnames = ['James', 'John' ,'James', 'John', 'James', 'John', 'John']\n // example 3: var $president = [ 39, 6, 5, 10, 4, 35, 2 ]\n // example 3: array_multisort($firstnames, 'SORT_DESC', 'SORT_STRING', $lastnames, 'SORT_ASC', 'SORT_STRING', $president, 'SORT_NUMERIC')\n // returns 3: true\n // example 4: array_multisort([\"productIds[]\", \"_\"], 'SORT_ASC', [\"productIds[]=977385529\", \"_=1502965788347\"])\n // returns 4: true\n // note 1: flags: Translation table for sort arguments.\n // note 1: Each argument turns on certain bits in the flag byte through addition.\n // note 1: bits: HGFE DCBA\n // note 1: args: Holds pointer to arguments for reassignment\n\n let g\n let i\n let j\n let k\n let l\n let sal\n let vkey\n let elIndex\n let lastSorts\n let tmpArray\n let zlast\n\n const sortFlag = [0]\n const thingsToSort = []\n let nLastSort = []\n let lastSort = []\n // possibly redundant\n const args = arguments\n\n const flags = {\n SORT_REGULAR: 16,\n SORT_NUMERIC: 17,\n SORT_STRING: 18,\n SORT_ASC: 32,\n SORT_DESC: 40,\n }\n\n const sortDuplicator = function (a, b) {\n return nLastSort.shift()\n }\n\n const sortFunctions = [\n [\n function (a, b) {\n lastSort.push(a > b ? 1 : a < b ? -1 : 0)\n return a > b ? 1 : a < b ? -1 : 0\n },\n function (a, b) {\n lastSort.push(b > a ? 1 : b < a ? -1 : 0)\n return b > a ? 1 : b < a ? -1 : 0\n },\n ],\n [\n function (a, b) {\n lastSort.push(a - b)\n return a - b\n },\n function (a, b) {\n lastSort.push(b - a)\n return b - a\n },\n ],\n [\n function (a, b) {\n lastSort.push(a + '' > b + '' ? 1 : a + '' < b + '' ? -1 : 0)\n return a + '' > b + '' ? 1 : a + '' < b + '' ? -1 : 0\n },\n function (a, b) {\n lastSort.push(b + '' > a + '' ? 1 : b + '' < a + '' ? -1 : 0)\n return b + '' > a + '' ? 1 : b + '' < a + '' ? -1 : 0\n },\n ],\n ]\n\n const sortArrs = [[]]\n\n const sortKeys = [[]]\n\n // Store first argument into sortArrs and sortKeys if an Object.\n // First Argument should be either a Javascript Array or an Object,\n // otherwise function would return FALSE like in PHP\n if (Object.prototype.toString.call(arr) === '[object Array]') {\n sortArrs[0] = arr\n } else if (arr && typeof arr === 'object') {\n for (i in arr) {\n if (arr.hasOwnProperty(i)) {\n sortKeys[0].push(i)\n sortArrs[0].push(arr[i])\n }\n }\n } else {\n return false\n }\n\n // arrMainLength: Holds the length of the first array.\n // All other arrays must be of equal length, otherwise function would return FALSE like in PHP\n // sortComponents: Holds 2 indexes per every section of the array\n // that can be sorted. As this is the start, the whole array can be sorted.\n const arrMainLength = sortArrs[0].length\n let sortComponents = [0, arrMainLength]\n\n // Loop through all other arguments, checking lengths and sort flags\n // of arrays and adding them to the above variables.\n const argl = arguments.length\n for (j = 1; j < argl; j++) {\n if (Object.prototype.toString.call(arguments[j]) === '[object Array]') {\n sortArrs[j] = arguments[j]\n sortFlag[j] = 0\n if (arguments[j].length !== arrMainLength) {\n return false\n }\n } else if (arguments[j] && typeof arguments[j] === 'object') {\n sortKeys[j] = []\n sortArrs[j] = []\n sortFlag[j] = 0\n for (i in arguments[j]) {\n if (arguments[j].hasOwnProperty(i)) {\n sortKeys[j].push(i)\n sortArrs[j].push(arguments[j][i])\n }\n }\n if (sortArrs[j].length !== arrMainLength) {\n return false\n }\n } else if (typeof arguments[j] === 'string') {\n const lFlag = sortFlag.pop()\n // Keep extra parentheses around latter flags check\n // to avoid minimization leading to CDATA closer\n if (typeof flags[arguments[j]] === 'undefined' || ((flags[arguments[j]] >>> 4) & (lFlag >>> 4)) > 0) {\n return false\n }\n sortFlag.push(lFlag + flags[arguments[j]])\n } else {\n return false\n }\n }\n\n for (i = 0; i !== arrMainLength; i++) {\n thingsToSort.push(true)\n }\n\n // Sort all the arrays....\n for (i in sortArrs) {\n if (sortArrs.hasOwnProperty(i)) {\n lastSorts = []\n tmpArray = []\n elIndex = 0\n nLastSort = []\n lastSort = []\n\n // If there are no sortComponents, then no more sorting is neeeded.\n // Copy the array back to the argument.\n if (sortComponents.length === 0) {\n if (Object.prototype.toString.call(arguments[i]) === '[object Array]') {\n args[i] = sortArrs[i]\n } else {\n for (k in arguments[i]) {\n if (arguments[i].hasOwnProperty(k)) {\n delete arguments[i][k]\n }\n }\n sal = sortArrs[i].length\n for (j = 0, vkey = 0; j < sal; j++) {\n vkey = sortKeys[i][j]\n args[i][vkey] = sortArrs[i][j]\n }\n }\n sortArrs.splice(i, 1)\n sortKeys.splice(i, 1)\n continue\n }\n\n // Sort function for sorting. Either sorts asc or desc, regular/string or numeric.\n let sFunction = sortFunctions[sortFlag[i] & 3][(sortFlag[i] & 8) > 0 ? 1 : 0]\n\n // Sort current array.\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortArrs[i].slice(sortComponents[l], sortComponents[l + 1] + 1)\n tmpArray.sort(sFunction)\n // Is there a better way to copy an array in Javascript?\n lastSorts[l] = [].concat(lastSort)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortArrs[i][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n\n // Duplicate the sorting of the current array on future arrays.\n sFunction = sortDuplicator\n for (j in sortArrs) {\n if (sortArrs.hasOwnProperty(j)) {\n if (sortArrs[j] === sortArrs[i]) {\n continue\n }\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortArrs[j].slice(sortComponents[l], sortComponents[l + 1] + 1)\n // alert(l + ':' + nLastSort);\n nLastSort = [].concat(lastSorts[l])\n tmpArray.sort(sFunction)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortArrs[j][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n }\n }\n\n // Duplicate the sorting of the current array on array keys\n for (j in sortKeys) {\n if (sortKeys.hasOwnProperty(j)) {\n for (l = 0; l !== sortComponents.length; l += 2) {\n tmpArray = sortKeys[j].slice(sortComponents[l], sortComponents[l + 1] + 1)\n nLastSort = [].concat(lastSorts[l])\n tmpArray.sort(sFunction)\n elIndex = sortComponents[l]\n for (g in tmpArray) {\n if (tmpArray.hasOwnProperty(g)) {\n sortKeys[j][elIndex] = tmpArray[g]\n elIndex++\n }\n }\n }\n }\n }\n\n // Generate the next sortComponents\n zlast = null\n sortComponents = []\n for (j in sortArrs[i]) {\n if (sortArrs[i].hasOwnProperty(j)) {\n if (!thingsToSort[j]) {\n if (sortComponents.length & 1) {\n sortComponents.push(j - 1)\n }\n zlast = null\n continue\n }\n if (!(sortComponents.length & 1)) {\n if (zlast !== null) {\n if (sortArrs[i][j] === zlast) {\n sortComponents.push(j - 1)\n } else {\n thingsToSort[j] = false\n }\n }\n zlast = sortArrs[i][j]\n } else {\n if (sortArrs[i][j] !== zlast) {\n sortComponents.push(j - 1)\n zlast = sortArrs[i][j]\n }\n }\n }\n }\n\n if (sortComponents.length & 1) {\n sortComponents.push(j)\n }\n if (Object.prototype.toString.call(arguments[i]) === '[object Array]') {\n args[i] = sortArrs[i]\n } else {\n for (j in arguments[i]) {\n if (arguments[i].hasOwnProperty(j)) {\n delete arguments[i][j]\n }\n }\n\n sal = sortArrs[i].length\n for (j = 0, vkey = 0; j < sal; j++) {\n vkey = sortKeys[i][j]\n args[i][vkey] = sortArrs[i][j]\n }\n }\n sortArrs.splice(i, 1)\n sortKeys.splice(i, 1)\n }\n }\n return true\n}\n"]}
|
|
@@ -432,6 +432,28 @@ var formats = {
|
|
|
432
432
|
}
|
|
433
433
|
},
|
|
434
434
|
|
|
435
|
+
oracledate: {
|
|
436
|
+
regex: /^(\d{2})-([A-Z]{3})-(\d{2})$/i,
|
|
437
|
+
name: 'd-M-y',
|
|
438
|
+
callback: function callback(match, day, monthText, year) {
|
|
439
|
+
var month = {
|
|
440
|
+
JAN: 0,
|
|
441
|
+
FEB: 1,
|
|
442
|
+
MAR: 2,
|
|
443
|
+
APR: 3,
|
|
444
|
+
MAY: 4,
|
|
445
|
+
JUN: 5,
|
|
446
|
+
JUL: 6,
|
|
447
|
+
AUG: 7,
|
|
448
|
+
SEP: 8,
|
|
449
|
+
OCT: 9,
|
|
450
|
+
NOV: 10,
|
|
451
|
+
DEC: 11
|
|
452
|
+
}[monthText.toUpperCase()];
|
|
453
|
+
return this.ymd(2000 + parseInt(year, 10), month, parseInt(day, 10));
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
|
|
435
457
|
timeLong12: {
|
|
436
458
|
regex: RegExp('^' + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),
|
|
437
459
|
name: 'timelong12',
|
|
@@ -1248,6 +1270,8 @@ module.exports = function strtotime(str, now) {
|
|
|
1248
1270
|
// returns 5: 1241418600
|
|
1249
1271
|
// example 6: strtotime('2009-05-04 08:30:00 YWT')
|
|
1250
1272
|
// returns 6: 1241454600
|
|
1273
|
+
// example 7: strtotime('10-JUL-17')
|
|
1274
|
+
// returns 7: 1499644800
|
|
1251
1275
|
|
|
1252
1276
|
if (now == null) {
|
|
1253
1277
|
now = Math.floor(Date.now() / 1000);
|
|
@@ -1258,7 +1282,7 @@ module.exports = function strtotime(str, now) {
|
|
|
1258
1282
|
// if multiple rules match the same string, the first match wins
|
|
1259
1283
|
var rules = [formats.yesterday, formats.now, formats.noon, formats.midnightOrToday, formats.tomorrow, formats.timestamp, formats.firstOrLastDay, formats.backOrFrontOf,
|
|
1260
1284
|
// formats.weekdayOf, // not yet implemented
|
|
1261
|
-
formats.timeTiny12, formats.timeShort12, formats.timeLong12, formats.mssqltime, formats.timeShort24, formats.timeLong24, formats.iso8601long, formats.gnuNoColon, formats.iso8601noColon, formats.americanShort, formats.american, formats.iso8601date4, formats.iso8601dateSlash, formats.dateSlash, formats.gnuDateShortOrIso8601date2, formats.gnuDateShorter, formats.dateFull, formats.pointedDate4, formats.pointedDate2, formats.dateNoDay, formats.dateNoDayRev, formats.dateTextual, formats.dateNoYear, formats.dateNoYearRev, formats.dateNoColon, formats.xmlRpc, formats.xmlRpcNoColon, formats.soap, formats.wddx, formats.exif, formats.pgydotd, formats.isoWeekDay, formats.pgTextShort, formats.pgTextReverse, formats.clf, formats.year4, formats.ago, formats.dayText, formats.relativeTextWeek, formats.relativeText, formats.monthFullOrMonthAbbr, formats.tzCorrection, formats.tzAbbr, formats.dateShortWithTimeShort12, formats.dateShortWithTimeLong12, formats.dateShortWithTimeShort, formats.dateShortWithTimeLong, formats.relative, formats.whitespace];
|
|
1285
|
+
formats.timeTiny12, formats.timeShort12, formats.timeLong12, formats.mssqltime, formats.oracledate, formats.timeShort24, formats.timeLong24, formats.iso8601long, formats.gnuNoColon, formats.iso8601noColon, formats.americanShort, formats.american, formats.iso8601date4, formats.iso8601dateSlash, formats.dateSlash, formats.gnuDateShortOrIso8601date2, formats.gnuDateShorter, formats.dateFull, formats.pointedDate4, formats.pointedDate2, formats.dateNoDay, formats.dateNoDayRev, formats.dateTextual, formats.dateNoYear, formats.dateNoYearRev, formats.dateNoColon, formats.xmlRpc, formats.xmlRpcNoColon, formats.soap, formats.wddx, formats.exif, formats.pgydotd, formats.isoWeekDay, formats.pgTextShort, formats.pgTextReverse, formats.clf, formats.year4, formats.ago, formats.dayText, formats.relativeTextWeek, formats.relativeText, formats.monthFullOrMonthAbbr, formats.tzCorrection, formats.tzAbbr, formats.dateShortWithTimeShort12, formats.dateShortWithTimeLong12, formats.dateShortWithTimeShort, formats.dateShortWithTimeLong, formats.relative, formats.whitespace];
|
|
1262
1286
|
|
|
1263
1287
|
var result = Object.create(resultProto);
|
|
1264
1288
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/datetime/strtotime.js"],"names":["reSpace","reSpaceOpt","reMeridian","reHour24","reHour24lz","reHour12","reMinute","reMinutelz","reSecond","reSecondlz","reFrac","reDayfull","reDayabbr","reDaytext","reReltextnumber","reReltexttext","reReltextunit","reYear","reYear2","reYear4","reYear4withSign","reMonth","reMonthlz","reDay","reDaylz","reMonthFull","reMonthAbbr","reMonthroman","reMonthText","reTzCorrection","reTzAbbr","reDayOfYear","reWeekOfYear","reDateNoYear","processMeridian","hour","meridian","toLowerCase","processYear","yearStr","year","length","lookupMonth","monthStr","jan","january","i","feb","february","ii","mar","march","iii","apr","april","iv","may","v","jun","june","vi","jul","july","vii","aug","august","viii","sep","sept","september","ix","oct","october","x","nov","november","xi","dec","december","xii","lookupWeekday","dayStr","desiredSundayNumber","dayNumbers","mon","monday","tue","tuesday","wed","wednesday","thu","thursday","fri","friday","sat","saturday","sun","sunday","lookupRelative","relText","relativeNumbers","last","previous","this","first","next","second","third","fourth","fifth","sixth","seventh","eight","eighth","ninth","tenth","eleventh","twelfth","relativeBehavior","relTextLower","amount","behavior","processTzCorrection","tzOffset","oldValue","reTzCorrectionLoose","match","sign","hours","minutes","Math","floor","tzAbbrOffsets","acdt","acst","addt","adt","aedt","aest","ahdt","ahst","akdt","akst","amt","apt","ast","awdt","awst","awt","bdst","bdt","bmt","bst","cast","cat","cddt","cdt","cemt","cest","cet","cmt","cpt","cst","cwt","chst","dmt","eat","eddt","edt","eest","eet","emt","ept","est","ewt","ffmt","fmt","gdt","gmt","gst","hdt","hkst","hkt","hmt","hpt","hst","hwt","iddt","idt","imt","ist","jdt","jmt","jst","kdt","kmt","kst","lst","mddt","mdst","mdt","mest","met","mmt","mpt","msd","msk","mst","mwt","nddt","ndt","npt","nst","nwt","nzdt","nzmt","nzst","pddt","pdt","pkst","pkt","plmt","pmt","ppmt","ppt","pst","pwt","qmt","rmt","sast","sdmt","sjmt","smt","sst","tbmt","tmt","uct","utc","wast","wat","wemt","west","wet","wib","wita","wit","wmt","yddt","ydt","ypt","yst","ywt","a","b","c","d","e","f","g","h","k","l","m","n","o","p","q","r","s","t","u","w","y","z","formats","yesterday","regex","name","callback","rd","resetTime","now","noon","time","midnightOrToday","tomorrow","timestamp","rs","dates","zone","firstOrLastDay","day","firstOrLastDayOfMonth","backOrFrontOf","RegExp","side","back","minute","weekdayOf","mssqltime","frac","substr","timeLong12","timeShort12","timeTiny12","soap","month","tzCorrection","ymd","wddx","exif","xmlRpc","xmlRpcNoColon","clf","iso8601long","dateTextual","pointedDate4","pointedDate2","timeLong24","dateNoColon","pgydotd","timeShort24","iso8601noColon","iso8601dateSlash","dateSlash","american","americanShort","gnuDateShortOrIso8601date2","iso8601date4","gnuNoColon","times","gnuDateShorter","pgTextReverse","dateFull","dateNoDay","dateNoDayRev","pgTextShort","dateNoYear","dateNoYearRev","isoWeekDay","week","dayOfWeek","Date","getDay","relativeText","relValue","relUnit","ri","rh","rm","ry","weekday","weekdayBehavior","relative","signs","minuses","replace","pow","dayText","relativeTextWeek","isNaN","monthFullOrMonthAbbr","tzAbbr","abbr","offset","ago","rf","year4","whitespace","dateShortWithTimeLong","dateShortWithTimeLong12","dateShortWithTimeShort","dateShortWithTimeShort12","resultProto","NaN","zones","toDate","relativeTo","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","date","getTime","setFullYear","setHours","dow","diff","abs","result","setDate","setMonth","getTimezoneOffset","setUTCFullYear","setUTCHours","module","exports","strtotime","str","rules","Object","create","longestMatch","finalRule","format","apply"],"mappings":"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","file":"strtotime.js","sourcesContent":["const reSpace = '[ \\\\t]+'\nconst reSpaceOpt = '[ \\\\t]*'\nconst reMeridian = '(?:([ap])\\\\.?m\\\\.?([\\\\t ]|$))'\nconst reHour24 = '(2[0-4]|[01]?[0-9])'\nconst reHour24lz = '([01][0-9]|2[0-4])'\nconst reHour12 = '(0?[1-9]|1[0-2])'\nconst reMinute = '([0-5]?[0-9])'\nconst reMinutelz = '([0-5][0-9])'\nconst reSecond = '(60|[0-5]?[0-9])'\nconst reSecondlz = '(60|[0-5][0-9])'\nconst reFrac = '(?:\\\\.([0-9]+))'\n\nconst reDayfull = 'sunday|monday|tuesday|wednesday|thursday|friday|saturday'\nconst reDayabbr = 'sun|mon|tue|wed|thu|fri|sat'\nconst reDaytext = reDayfull + '|' + reDayabbr + '|weekdays?'\n\nconst reReltextnumber = 'first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth'\nconst reReltexttext = 'next|last|previous|this'\nconst reReltextunit = '(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|' + reDaytext\n\nconst reYear = '([0-9]{1,4})'\nconst reYear2 = '([0-9]{2})'\nconst reYear4 = '([0-9]{4})'\nconst reYear4withSign = '([+-]?[0-9]{4})'\nconst reMonth = '(1[0-2]|0?[0-9])'\nconst reMonthlz = '(0[0-9]|1[0-2])'\nconst reDay = '(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)'\nconst reDaylz = '(0[0-9]|[1-2][0-9]|3[01])'\n\nconst reMonthFull = 'january|february|march|april|may|june|july|august|september|october|november|december'\nconst reMonthAbbr = 'jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec'\nconst reMonthroman = 'i[vx]|vi{0,3}|xi{0,2}|i{1,3}'\nconst reMonthText = '(' + reMonthFull + '|' + reMonthAbbr + '|' + reMonthroman + ')'\n\nconst reTzCorrection = '((?:GMT)?([+-])' + reHour24 + ':?' + reMinute + '?)'\nconst reTzAbbr = '\\\\(?([a-zA-Z]{1,6})\\\\)?'\nconst reDayOfYear = '(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])'\nconst reWeekOfYear = '(0[1-9]|[1-4][0-9]|5[0-3])'\n\nconst reDateNoYear = reMonthText + '[ .\\\\t-]*' + reDay + '[,.stndrh\\\\t ]*'\n\nfunction processMeridian(hour, meridian) {\n meridian = meridian && meridian.toLowerCase()\n\n switch (meridian) {\n case 'a':\n hour += hour === 12 ? -12 : 0\n break\n case 'p':\n hour += hour !== 12 ? 12 : 0\n break\n }\n\n return hour\n}\n\nfunction processYear(yearStr) {\n let year = +yearStr\n\n if (yearStr.length < 4 && year < 100) {\n year += year < 70 ? 2000 : 1900\n }\n\n return year\n}\n\nfunction lookupMonth(monthStr) {\n return {\n jan: 0,\n january: 0,\n i: 0,\n feb: 1,\n february: 1,\n ii: 1,\n mar: 2,\n march: 2,\n iii: 2,\n apr: 3,\n april: 3,\n iv: 3,\n may: 4,\n v: 4,\n jun: 5,\n june: 5,\n vi: 5,\n jul: 6,\n july: 6,\n vii: 6,\n aug: 7,\n august: 7,\n viii: 7,\n sep: 8,\n sept: 8,\n september: 8,\n ix: 8,\n oct: 9,\n october: 9,\n x: 9,\n nov: 10,\n november: 10,\n xi: 10,\n dec: 11,\n december: 11,\n xii: 11,\n }[monthStr.toLowerCase()]\n}\n\nfunction lookupWeekday(dayStr, desiredSundayNumber = 0) {\n const dayNumbers = {\n mon: 1,\n monday: 1,\n tue: 2,\n tuesday: 2,\n wed: 3,\n wednesday: 3,\n thu: 4,\n thursday: 4,\n fri: 5,\n friday: 5,\n sat: 6,\n saturday: 6,\n sun: 0,\n sunday: 0,\n }\n\n return dayNumbers[dayStr.toLowerCase()] || desiredSundayNumber\n}\n\nfunction lookupRelative(relText) {\n const relativeNumbers = {\n last: -1,\n previous: -1,\n this: 0,\n first: 1,\n next: 1,\n second: 2,\n third: 3,\n fourth: 4,\n fifth: 5,\n sixth: 6,\n seventh: 7,\n eight: 8,\n eighth: 8,\n ninth: 9,\n tenth: 10,\n eleventh: 11,\n twelfth: 12,\n }\n\n const relativeBehavior = {\n this: 1,\n }\n\n const relTextLower = relText.toLowerCase()\n\n return {\n amount: relativeNumbers[relTextLower],\n behavior: relativeBehavior[relTextLower] || 0,\n }\n}\n\nfunction processTzCorrection(tzOffset, oldValue) {\n const reTzCorrectionLoose = /(?:GMT)?([+-])(\\d+)(:?)(\\d{0,2})/i\n tzOffset = tzOffset && tzOffset.match(reTzCorrectionLoose)\n\n if (!tzOffset) {\n return oldValue\n }\n\n const sign = tzOffset[1] === '-' ? -1 : 1\n let hours = +tzOffset[2]\n let minutes = +tzOffset[4]\n\n if (!tzOffset[4] && !tzOffset[3]) {\n minutes = Math.floor(hours % 100)\n hours = Math.floor(hours / 100)\n }\n\n // timezone offset in seconds\n return sign * (hours * 60 + minutes) * 60\n}\n\n// tz abbrevation : tz offset in seconds\nconst tzAbbrOffsets = {\n acdt: 37800,\n acst: 34200,\n addt: -7200,\n adt: -10800,\n aedt: 39600,\n aest: 36000,\n ahdt: -32400,\n ahst: -36000,\n akdt: -28800,\n akst: -32400,\n amt: -13840,\n apt: -10800,\n ast: -14400,\n awdt: 32400,\n awst: 28800,\n awt: -10800,\n bdst: 7200,\n bdt: -36000,\n bmt: -14309,\n bst: 3600,\n cast: 34200,\n cat: 7200,\n cddt: -14400,\n cdt: -18000,\n cemt: 10800,\n cest: 7200,\n cet: 3600,\n cmt: -15408,\n cpt: -18000,\n cst: -21600,\n cwt: -18000,\n chst: 36000,\n dmt: -1521,\n eat: 10800,\n eddt: -10800,\n edt: -14400,\n eest: 10800,\n eet: 7200,\n emt: -26248,\n ept: -14400,\n est: -18000,\n ewt: -14400,\n ffmt: -14660,\n fmt: -4056,\n gdt: 39600,\n gmt: 0,\n gst: 36000,\n hdt: -34200,\n hkst: 32400,\n hkt: 28800,\n hmt: -19776,\n hpt: -34200,\n hst: -36000,\n hwt: -34200,\n iddt: 14400,\n idt: 10800,\n imt: 25025,\n ist: 7200,\n jdt: 36000,\n jmt: 8440,\n jst: 32400,\n kdt: 36000,\n kmt: 5736,\n kst: 30600,\n lst: 9394,\n mddt: -18000,\n mdst: 16279,\n mdt: -21600,\n mest: 7200,\n met: 3600,\n mmt: 9017,\n mpt: -21600,\n msd: 14400,\n msk: 10800,\n mst: -25200,\n mwt: -21600,\n nddt: -5400,\n ndt: -9052,\n npt: -9000,\n nst: -12600,\n nwt: -9000,\n nzdt: 46800,\n nzmt: 41400,\n nzst: 43200,\n pddt: -21600,\n pdt: -25200,\n pkst: 21600,\n pkt: 18000,\n plmt: 25590,\n pmt: -13236,\n ppmt: -17340,\n ppt: -25200,\n pst: -28800,\n pwt: -25200,\n qmt: -18840,\n rmt: 5794,\n sast: 7200,\n sdmt: -16800,\n sjmt: -20173,\n smt: -13884,\n sst: -39600,\n tbmt: 10751,\n tmt: 12344,\n uct: 0,\n utc: 0,\n wast: 7200,\n wat: 3600,\n wemt: 7200,\n west: 3600,\n wet: 0,\n wib: 25200,\n wita: 28800,\n wit: 32400,\n wmt: 5040,\n yddt: -25200,\n ydt: -28800,\n ypt: -28800,\n yst: -32400,\n ywt: -28800,\n a: 3600,\n b: 7200,\n c: 10800,\n d: 14400,\n e: 18000,\n f: 21600,\n g: 25200,\n h: 28800,\n i: 32400,\n k: 36000,\n l: 39600,\n m: 43200,\n n: -3600,\n o: -7200,\n p: -10800,\n q: -14400,\n r: -18000,\n s: -21600,\n t: -25200,\n u: -28800,\n v: -32400,\n w: -36000,\n x: -39600,\n y: -43200,\n z: 0,\n}\n\nconst formats = {\n yesterday: {\n regex: /^yesterday/i,\n name: 'yesterday',\n callback() {\n this.rd -= 1\n return this.resetTime()\n },\n },\n\n now: {\n regex: /^now/i,\n name: 'now',\n // do nothing\n },\n\n noon: {\n regex: /^noon/i,\n name: 'noon',\n callback() {\n return this.resetTime() && this.time(12, 0, 0, 0)\n },\n },\n\n midnightOrToday: {\n regex: /^(midnight|today)/i,\n name: 'midnight | today',\n callback() {\n return this.resetTime()\n },\n },\n\n tomorrow: {\n regex: /^tomorrow/i,\n name: 'tomorrow',\n callback() {\n this.rd += 1\n return this.resetTime()\n },\n },\n\n timestamp: {\n regex: /^@(-?\\d+)/i,\n name: 'timestamp',\n callback(match, timestamp) {\n this.rs += +timestamp\n this.y = 1970\n this.m = 0\n this.d = 1\n this.dates = 0\n\n return this.resetTime() && this.zone(0)\n },\n },\n\n firstOrLastDay: {\n regex: /^(first|last) day of/i,\n name: 'firstdayof | lastdayof',\n callback(match, day) {\n if (day.toLowerCase() === 'first') {\n this.firstOrLastDayOfMonth = 1\n } else {\n this.firstOrLastDayOfMonth = -1\n }\n },\n },\n\n backOrFrontOf: {\n regex: RegExp('^(back|front) of ' + reHour24 + reSpaceOpt + reMeridian + '?', 'i'),\n name: 'backof | frontof',\n callback(match, side, hours, meridian) {\n const back = side.toLowerCase() === 'back'\n let hour = +hours\n let minute = 15\n\n if (!back) {\n hour -= 1\n minute = 45\n }\n\n hour = processMeridian(hour, meridian)\n\n return this.resetTime() && this.time(hour, minute, 0, 0)\n },\n },\n\n weekdayOf: {\n regex: RegExp(\n '^(' +\n reReltextnumber +\n '|' +\n reReltexttext +\n ')' +\n reSpace +\n '(' +\n reDayfull +\n '|' +\n reDayabbr +\n ')' +\n reSpace +\n 'of',\n 'i',\n ),\n name: 'weekdayof',\n // todo\n },\n\n mssqltime: {\n regex: RegExp('^' + reHour12 + ':' + reMinutelz + ':' + reSecondlz + '[:.]([0-9]+)' + reMeridian, 'i'),\n name: 'mssqltime',\n callback(match, hour, minute, second, frac, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, +second, +frac.substr(0, 3))\n },\n },\n\n timeLong12: {\n regex: RegExp('^' + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),\n name: 'timelong12',\n callback(match, hour, minute, second, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, +second, 0)\n },\n },\n\n timeShort12: {\n regex: RegExp('^' + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),\n name: 'timeshort12',\n callback(match, hour, minute, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, 0, 0)\n },\n },\n\n timeTiny12: {\n regex: RegExp('^' + reHour12 + reSpaceOpt + reMeridian, 'i'),\n name: 'timetiny12',\n callback(match, hour, meridian) {\n return this.time(processMeridian(+hour, meridian), 0, 0, 0)\n },\n },\n\n soap: {\n regex: RegExp(\n '^' +\n reYear4 +\n '-' +\n reMonthlz +\n '-' +\n reDaylz +\n 'T' +\n reHour24lz +\n ':' +\n reMinutelz +\n ':' +\n reSecondlz +\n reFrac +\n reTzCorrection +\n '?',\n 'i',\n ),\n name: 'soap',\n callback(match, year, month, day, hour, minute, second, frac, tzCorrection) {\n return (\n this.ymd(+year, month - 1, +day) &&\n this.time(+hour, +minute, +second, +frac.substr(0, 3)) &&\n this.zone(processTzCorrection(tzCorrection))\n )\n },\n },\n\n wddx: {\n regex: RegExp('^' + reYear4 + '-' + reMonth + '-' + reDay + 'T' + reHour24 + ':' + reMinute + ':' + reSecond),\n name: 'wddx',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n exif: {\n regex: RegExp(\n '^' + reYear4 + ':' + reMonthlz + ':' + reDaylz + ' ' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz,\n 'i',\n ),\n name: 'exif',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n xmlRpc: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + 'T' + reHour24 + ':' + reMinutelz + ':' + reSecondlz),\n name: 'xmlrpc',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n xmlRpcNoColon: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + '[Tt]' + reHour24 + reMinutelz + reSecondlz),\n name: 'xmlrpcnocolon',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n clf: {\n regex: RegExp(\n '^' +\n reDay +\n '/(' +\n reMonthAbbr +\n ')/' +\n reYear4 +\n ':' +\n reHour24lz +\n ':' +\n reMinutelz +\n ':' +\n reSecondlz +\n reSpace +\n reTzCorrection,\n 'i',\n ),\n name: 'clf',\n callback(match, day, month, year, hour, minute, second, tzCorrection) {\n return (\n this.ymd(+year, lookupMonth(month), +day) &&\n this.time(+hour, +minute, +second, 0) &&\n this.zone(processTzCorrection(tzCorrection))\n )\n },\n },\n\n iso8601long: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond + reFrac, 'i'),\n name: 'iso8601long',\n callback(match, hour, minute, second, frac) {\n return this.time(+hour, +minute, +second, +frac.substr(0, 3))\n },\n },\n\n dateTextual: {\n regex: RegExp('^' + reMonthText + '[ .\\\\t-]*' + reDay + '[,.stndrh\\\\t ]+' + reYear, 'i'),\n name: 'datetextual',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n pointedDate4: {\n regex: RegExp('^' + reDay + '[.\\\\t-]' + reMonth + '[.-]' + reYear4),\n name: 'pointeddate4',\n callback(match, day, month, year) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n pointedDate2: {\n regex: RegExp('^' + reDay + '[.\\\\t]' + reMonth + '\\\\.' + reYear2),\n name: 'pointeddate2',\n callback(match, day, month, year) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n timeLong24: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond),\n name: 'timelong24',\n callback(match, hour, minute, second) {\n return this.time(+hour, +minute, +second, 0)\n },\n },\n\n dateNoColon: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz),\n name: 'datenocolon',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n pgydotd: {\n regex: RegExp('^' + reYear4 + '\\\\.?' + reDayOfYear),\n name: 'pgydotd',\n callback(match, year, day) {\n return this.ymd(+year, 0, +day)\n },\n },\n\n timeShort24: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute, 'i'),\n name: 'timeshort24',\n callback(match, hour, minute) {\n return this.time(+hour, +minute, 0, 0)\n },\n },\n\n iso8601noColon: {\n regex: RegExp('^t?' + reHour24lz + reMinutelz + reSecondlz, 'i'),\n name: 'iso8601nocolon',\n callback(match, hour, minute, second) {\n return this.time(+hour, +minute, +second, 0)\n },\n },\n\n iso8601dateSlash: {\n // eventhough the trailing slash is optional in PHP\n // here it's mandatory and inputs without the slash\n // are handled by dateslash\n regex: RegExp('^' + reYear4 + '/' + reMonthlz + '/' + reDaylz + '/'),\n name: 'iso8601dateslash',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n dateSlash: {\n regex: RegExp('^' + reYear4 + '/' + reMonth + '/' + reDay),\n name: 'dateslash',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n american: {\n regex: RegExp('^' + reMonth + '/' + reDay + '/' + reYear),\n name: 'american',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n americanShort: {\n regex: RegExp('^' + reMonth + '/' + reDay),\n name: 'americanshort',\n callback(match, month, day) {\n return this.ymd(this.y, month - 1, +day)\n },\n },\n\n gnuDateShortOrIso8601date2: {\n // iso8601date2 is complete subset of gnudateshort\n regex: RegExp('^' + reYear + '-' + reMonth + '-' + reDay),\n name: 'gnudateshort | iso8601date2',\n callback(match, year, month, day) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n iso8601date4: {\n regex: RegExp('^' + reYear4withSign + '-' + reMonthlz + '-' + reDaylz),\n name: 'iso8601date4',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n gnuNoColon: {\n regex: RegExp('^t?' + reHour24lz + reMinutelz, 'i'),\n name: 'gnunocolon',\n callback(match, hour, minute) {\n // this rule is a special case\n // if time was already set once by any preceding rule, it sets the captured value as year\n switch (this.times) {\n case 0:\n return this.time(+hour, +minute, 0, this.f)\n case 1:\n this.y = hour * 100 + +minute\n this.times++\n\n return true\n default:\n return false\n }\n },\n },\n\n gnuDateShorter: {\n regex: RegExp('^' + reYear4 + '-' + reMonth),\n name: 'gnudateshorter',\n callback(match, year, month) {\n return this.ymd(+year, month - 1, 1)\n },\n },\n\n pgTextReverse: {\n // note: allowed years are from 32-9999\n // years below 32 should be treated as days in datefull\n regex: RegExp('^' + '(\\\\d{3,4}|[4-9]\\\\d|3[2-9])-(' + reMonthAbbr + ')-' + reDaylz, 'i'),\n name: 'pgtextreverse',\n callback(match, year, month, day) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateFull: {\n regex: RegExp('^' + reDay + '[ \\\\t.-]*' + reMonthText + '[ \\\\t.-]*' + reYear, 'i'),\n name: 'datefull',\n callback(match, day, month, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateNoDay: {\n regex: RegExp('^' + reMonthText + '[ .\\\\t-]*' + reYear4, 'i'),\n name: 'datenoday',\n callback(match, month, year) {\n return this.ymd(+year, lookupMonth(month), 1)\n },\n },\n\n dateNoDayRev: {\n regex: RegExp('^' + reYear4 + '[ .\\\\t-]*' + reMonthText, 'i'),\n name: 'datenodayrev',\n callback(match, year, month) {\n return this.ymd(+year, lookupMonth(month), 1)\n },\n },\n\n pgTextShort: {\n regex: RegExp('^(' + reMonthAbbr + ')-' + reDaylz + '-' + reYear, 'i'),\n name: 'pgtextshort',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateNoYear: {\n regex: RegExp('^' + reDateNoYear, 'i'),\n name: 'datenoyear',\n callback(match, month, day) {\n return this.ymd(this.y, lookupMonth(month), +day)\n },\n },\n\n dateNoYearRev: {\n regex: RegExp('^' + reDay + '[ .\\\\t-]*' + reMonthText, 'i'),\n name: 'datenoyearrev',\n callback(match, day, month) {\n return this.ymd(this.y, lookupMonth(month), +day)\n },\n },\n\n isoWeekDay: {\n regex: RegExp('^' + reYear4 + '-?W' + reWeekOfYear + '(?:-?([0-7]))?'),\n name: 'isoweekday | isoweek',\n callback(match, year, week, day) {\n day = day ? +day : 1\n\n if (!this.ymd(+year, 0, 1)) {\n return false\n }\n\n // get day of week for Jan 1st\n let dayOfWeek = new Date(this.y, this.m, this.d).getDay()\n\n // and use the day to figure out the offset for day 1 of week 1\n dayOfWeek = 0 - (dayOfWeek > 4 ? dayOfWeek - 7 : dayOfWeek)\n\n this.rd += dayOfWeek + (week - 1) * 7 + day\n },\n },\n\n relativeText: {\n regex: RegExp('^(' + reReltextnumber + '|' + reReltexttext + ')' + reSpace + '(' + reReltextunit + ')', 'i'),\n name: 'relativetext',\n callback(match, relValue, relUnit) {\n // todo: implement handling of 'this time-unit'\n // eslint-disable-next-line no-unused-vars\n const { amount, behavior } = lookupRelative(relValue)\n\n switch (relUnit.toLowerCase()) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n this.rs += amount\n break\n case 'min':\n case 'mins':\n case 'minute':\n case 'minutes':\n this.ri += amount\n break\n case 'hour':\n case 'hours':\n this.rh += amount\n break\n case 'day':\n case 'days':\n this.rd += amount\n break\n case 'fortnight':\n case 'fortnights':\n case 'forthnight':\n case 'forthnights':\n this.rd += amount * 14\n break\n case 'week':\n case 'weeks':\n this.rd += amount * 7\n break\n case 'month':\n case 'months':\n this.rm += amount\n break\n case 'year':\n case 'years':\n this.ry += amount\n break\n case 'mon':\n case 'monday':\n case 'tue':\n case 'tuesday':\n case 'wed':\n case 'wednesday':\n case 'thu':\n case 'thursday':\n case 'fri':\n case 'friday':\n case 'sat':\n case 'saturday':\n case 'sun':\n case 'sunday':\n this.resetTime()\n this.weekday = lookupWeekday(relUnit, 7)\n this.weekdayBehavior = 1\n this.rd += (amount > 0 ? amount - 1 : amount) * 7\n break\n case 'weekday':\n case 'weekdays':\n // todo\n break\n }\n },\n },\n\n relative: {\n regex: RegExp('^([+-]*)[ \\\\t]*(\\\\d+)' + reSpaceOpt + '(' + reReltextunit + '|week)', 'i'),\n name: 'relative',\n callback(match, signs, relValue, relUnit) {\n const minuses = signs.replace(/[^-]/g, '').length\n\n const amount = +relValue * Math.pow(-1, minuses)\n\n switch (relUnit.toLowerCase()) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n this.rs += amount\n break\n case 'min':\n case 'mins':\n case 'minute':\n case 'minutes':\n this.ri += amount\n break\n case 'hour':\n case 'hours':\n this.rh += amount\n break\n case 'day':\n case 'days':\n this.rd += amount\n break\n case 'fortnight':\n case 'fortnights':\n case 'forthnight':\n case 'forthnights':\n this.rd += amount * 14\n break\n case 'week':\n case 'weeks':\n this.rd += amount * 7\n break\n case 'month':\n case 'months':\n this.rm += amount\n break\n case 'year':\n case 'years':\n this.ry += amount\n break\n case 'mon':\n case 'monday':\n case 'tue':\n case 'tuesday':\n case 'wed':\n case 'wednesday':\n case 'thu':\n case 'thursday':\n case 'fri':\n case 'friday':\n case 'sat':\n case 'saturday':\n case 'sun':\n case 'sunday':\n this.resetTime()\n this.weekday = lookupWeekday(relUnit, 7)\n this.weekdayBehavior = 1\n this.rd += (amount > 0 ? amount - 1 : amount) * 7\n break\n case 'weekday':\n case 'weekdays':\n // todo\n break\n }\n },\n },\n\n dayText: {\n regex: RegExp('^(' + reDaytext + ')', 'i'),\n name: 'daytext',\n callback(match, dayText) {\n this.resetTime()\n this.weekday = lookupWeekday(dayText, 0)\n\n if (this.weekdayBehavior !== 2) {\n this.weekdayBehavior = 1\n }\n },\n },\n\n relativeTextWeek: {\n regex: RegExp('^(' + reReltexttext + ')' + reSpace + 'week', 'i'),\n name: 'relativetextweek',\n callback(match, relText) {\n this.weekdayBehavior = 2\n\n switch (relText.toLowerCase()) {\n case 'this':\n this.rd += 0\n break\n case 'next':\n this.rd += 7\n break\n case 'last':\n case 'previous':\n this.rd -= 7\n break\n }\n\n if (isNaN(this.weekday)) {\n this.weekday = 1\n }\n },\n },\n\n monthFullOrMonthAbbr: {\n regex: RegExp('^(' + reMonthFull + '|' + reMonthAbbr + ')', 'i'),\n name: 'monthfull | monthabbr',\n callback(match, month) {\n return this.ymd(this.y, lookupMonth(month), this.d)\n },\n },\n\n tzCorrection: {\n regex: RegExp('^' + reTzCorrection, 'i'),\n name: 'tzcorrection',\n callback(tzCorrection) {\n return this.zone(processTzCorrection(tzCorrection))\n },\n },\n\n tzAbbr: {\n regex: RegExp('^' + reTzAbbr),\n name: 'tzabbr',\n callback(match, abbr) {\n const offset = tzAbbrOffsets[abbr.toLowerCase()]\n\n if (isNaN(offset)) {\n return false\n }\n\n return this.zone(offset)\n },\n },\n\n ago: {\n regex: /^ago/i,\n name: 'ago',\n callback() {\n this.ry = -this.ry\n this.rm = -this.rm\n this.rd = -this.rd\n this.rh = -this.rh\n this.ri = -this.ri\n this.rs = -this.rs\n this.rf = -this.rf\n },\n },\n\n year4: {\n regex: RegExp('^' + reYear4),\n name: 'year4',\n callback(match, year) {\n this.y = +year\n return true\n },\n },\n\n whitespace: {\n regex: /^[ .,\\t]+/,\n name: 'whitespace',\n // do nothing\n },\n\n dateShortWithTimeLong: {\n regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond, 'i'),\n name: 'dateshortwithtimelong',\n callback(match, month, day, hour, minute, second) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n dateShortWithTimeLong12: {\n regex: RegExp(\n '^' + reDateNoYear + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian,\n 'i',\n ),\n name: 'dateshortwithtimelong12',\n callback(match, month, day, hour, minute, second, meridian) {\n return (\n this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, +second, 0)\n )\n },\n },\n\n dateShortWithTimeShort: {\n regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute, 'i'),\n name: 'dateshortwithtimeshort',\n callback(match, month, day, hour, minute) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, 0, 0)\n },\n },\n\n dateShortWithTimeShort12: {\n regex: RegExp('^' + reDateNoYear + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),\n name: 'dateshortwithtimeshort12',\n callback(match, month, day, hour, minute, meridian) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, 0, 0)\n },\n },\n}\n\nconst resultProto = {\n // date\n y: NaN,\n m: NaN,\n d: NaN,\n // time\n h: NaN,\n i: NaN,\n s: NaN,\n f: NaN,\n\n // relative shifts\n ry: 0,\n rm: 0,\n rd: 0,\n rh: 0,\n ri: 0,\n rs: 0,\n rf: 0,\n\n // weekday related shifts\n weekday: NaN,\n weekdayBehavior: 0,\n\n // first or last day of month\n // 0 none, 1 first, -1 last\n firstOrLastDayOfMonth: 0,\n\n // timezone correction in minutes\n z: NaN,\n\n // counters\n dates: 0,\n times: 0,\n zones: 0,\n\n // helper functions\n ymd(y, m, d) {\n if (this.dates > 0) {\n return false\n }\n\n this.dates++\n this.y = y\n this.m = m\n this.d = d\n return true\n },\n\n time(h, i, s, f) {\n if (this.times > 0) {\n return false\n }\n\n this.times++\n this.h = h\n this.i = i\n this.s = s\n this.f = f\n\n return true\n },\n\n resetTime() {\n this.h = 0\n this.i = 0\n this.s = 0\n this.f = 0\n this.times = 0\n\n return true\n },\n\n zone(minutes) {\n if (this.zones <= 1) {\n this.zones++\n this.z = minutes\n return true\n }\n\n return false\n },\n\n toDate(relativeTo) {\n if (this.dates && !this.times) {\n this.h = this.i = this.s = this.f = 0\n }\n\n // fill holes\n if (isNaN(this.y)) {\n this.y = relativeTo.getFullYear()\n }\n\n if (isNaN(this.m)) {\n this.m = relativeTo.getMonth()\n }\n\n if (isNaN(this.d)) {\n this.d = relativeTo.getDate()\n }\n\n if (isNaN(this.h)) {\n this.h = relativeTo.getHours()\n }\n\n if (isNaN(this.i)) {\n this.i = relativeTo.getMinutes()\n }\n\n if (isNaN(this.s)) {\n this.s = relativeTo.getSeconds()\n }\n\n if (isNaN(this.f)) {\n this.f = relativeTo.getMilliseconds()\n }\n\n // adjust special early\n switch (this.firstOrLastDayOfMonth) {\n case 1:\n this.d = 1\n break\n case -1:\n this.d = 0\n this.m += 1\n break\n }\n\n if (!isNaN(this.weekday)) {\n const date = new Date(relativeTo.getTime())\n date.setFullYear(this.y, this.m, this.d)\n date.setHours(this.h, this.i, this.s, this.f)\n\n const dow = date.getDay()\n\n if (this.weekdayBehavior === 2) {\n // To make \"this week\" work, where the current day of week is a \"sunday\"\n if (dow === 0 && this.weekday !== 0) {\n this.weekday = -6\n }\n\n // To make \"sunday this week\" work, where the current day of week is not a \"sunday\"\n if (this.weekday === 0 && dow !== 0) {\n this.weekday = 7\n }\n\n this.d -= dow\n this.d += this.weekday\n } else {\n let diff = this.weekday - dow\n\n // some PHP magic\n if ((this.rd < 0 && diff < 0) || (this.rd >= 0 && diff <= -this.weekdayBehavior)) {\n diff += 7\n }\n\n if (this.weekday >= 0) {\n this.d += diff\n } else {\n this.d -= 7 - (Math.abs(this.weekday) - dow)\n }\n\n this.weekday = NaN\n }\n }\n\n // adjust relative\n this.y += this.ry\n this.m += this.rm\n this.d += this.rd\n\n this.h += this.rh\n this.i += this.ri\n this.s += this.rs\n this.f += this.rf\n\n this.ry = this.rm = this.rd = 0\n this.rh = this.ri = this.rs = this.rf = 0\n\n const result = new Date(relativeTo.getTime())\n // since Date constructor treats years <= 99 as 1900+\n // it can't be used, thus this weird way\n result.setFullYear(this.y, this.m, this.d)\n result.setHours(this.h, this.i, this.s, this.f)\n\n // note: this is done twice in PHP\n // early when processing special relatives\n // and late\n // todo: check if the logic can be reduced\n // to just one time action\n switch (this.firstOrLastDayOfMonth) {\n case 1:\n result.setDate(1)\n break\n case -1:\n result.setMonth(result.getMonth() + 1, 0)\n break\n }\n\n // adjust timezone\n if (!isNaN(this.z) && result.getTimezoneOffset() !== this.z) {\n result.setUTCFullYear(result.getFullYear(), result.getMonth(), result.getDate())\n\n result.setUTCHours(result.getHours(), result.getMinutes(), result.getSeconds() - this.z, result.getMilliseconds())\n }\n\n return result\n },\n}\n\nmodule.exports = function strtotime(str, now) {\n // discuss at: https://locutus.io/php/strtotime/\n // original by: Caio Ariede (https://caioariede.com)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Caio Ariede (https://caioariede.com)\n // improved by: A. Matías Quezada (https://amatiasq.com)\n // improved by: preuter\n // improved by: Brett Zamir (https://brett-zamir.me)\n // improved by: Mirko Faber\n // input by: David\n // bugfixed by: Wagner B. Soares\n // bugfixed by: Artur Tchernychev\n // bugfixed by: Stephan Bösch-Plepelits (https://github.com/plepe)\n // reimplemented by: Rafał Kukawski\n // note 1: Examples all have a fixed timestamp to prevent\n // note 1: tests to fail because of variable time(zones)\n // example 1: strtotime('+1 day', 1129633200)\n // returns 1: 1129719600\n // example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200)\n // returns 2: 1130425202\n // example 3: strtotime('last month', 1129633200)\n // returns 3: 1127041200\n // example 4: strtotime('2009-05-04 08:30:00+00')\n // returns 4: 1241425800\n // example 5: strtotime('2009-05-04 08:30:00+02:00')\n // returns 5: 1241418600\n // example 6: strtotime('2009-05-04 08:30:00 YWT')\n // returns 6: 1241454600\n\n if (now == null) {\n now = Math.floor(Date.now() / 1000)\n }\n\n // the rule order is important\n // if multiple rules match, the longest match wins\n // if multiple rules match the same string, the first match wins\n const rules = [\n formats.yesterday,\n formats.now,\n formats.noon,\n formats.midnightOrToday,\n formats.tomorrow,\n formats.timestamp,\n formats.firstOrLastDay,\n formats.backOrFrontOf,\n // formats.weekdayOf, // not yet implemented\n formats.timeTiny12,\n formats.timeShort12,\n formats.timeLong12,\n formats.mssqltime,\n formats.timeShort24,\n formats.timeLong24,\n formats.iso8601long,\n formats.gnuNoColon,\n formats.iso8601noColon,\n formats.americanShort,\n formats.american,\n formats.iso8601date4,\n formats.iso8601dateSlash,\n formats.dateSlash,\n formats.gnuDateShortOrIso8601date2,\n formats.gnuDateShorter,\n formats.dateFull,\n formats.pointedDate4,\n formats.pointedDate2,\n formats.dateNoDay,\n formats.dateNoDayRev,\n formats.dateTextual,\n formats.dateNoYear,\n formats.dateNoYearRev,\n formats.dateNoColon,\n formats.xmlRpc,\n formats.xmlRpcNoColon,\n formats.soap,\n formats.wddx,\n formats.exif,\n formats.pgydotd,\n formats.isoWeekDay,\n formats.pgTextShort,\n formats.pgTextReverse,\n formats.clf,\n formats.year4,\n formats.ago,\n formats.dayText,\n formats.relativeTextWeek,\n formats.relativeText,\n formats.monthFullOrMonthAbbr,\n formats.tzCorrection,\n formats.tzAbbr,\n formats.dateShortWithTimeShort12,\n formats.dateShortWithTimeLong12,\n formats.dateShortWithTimeShort,\n formats.dateShortWithTimeLong,\n formats.relative,\n formats.whitespace,\n ]\n\n const result = Object.create(resultProto)\n\n while (str.length) {\n let longestMatch = null\n let finalRule = null\n\n for (let i = 0, l = rules.length; i < l; i++) {\n const format = rules[i]\n\n const match = str.match(format.regex)\n\n if (match) {\n if (!longestMatch || match[0].length > longestMatch[0].length) {\n longestMatch = match\n finalRule = format\n }\n }\n }\n\n if (!finalRule || (finalRule.callback && finalRule.callback.apply(result, longestMatch) === false)) {\n return false\n }\n\n str = str.substr(longestMatch[0].length)\n finalRule = null\n longestMatch = null\n }\n\n return Math.floor(result.toDate(new Date(now * 1000)) / 1000)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/datetime/strtotime.js"],"names":["reSpace","reSpaceOpt","reMeridian","reHour24","reHour24lz","reHour12","reMinute","reMinutelz","reSecond","reSecondlz","reFrac","reDayfull","reDayabbr","reDaytext","reReltextnumber","reReltexttext","reReltextunit","reYear","reYear2","reYear4","reYear4withSign","reMonth","reMonthlz","reDay","reDaylz","reMonthFull","reMonthAbbr","reMonthroman","reMonthText","reTzCorrection","reTzAbbr","reDayOfYear","reWeekOfYear","reDateNoYear","processMeridian","hour","meridian","toLowerCase","processYear","yearStr","year","length","lookupMonth","monthStr","jan","january","i","feb","february","ii","mar","march","iii","apr","april","iv","may","v","jun","june","vi","jul","july","vii","aug","august","viii","sep","sept","september","ix","oct","october","x","nov","november","xi","dec","december","xii","lookupWeekday","dayStr","desiredSundayNumber","dayNumbers","mon","monday","tue","tuesday","wed","wednesday","thu","thursday","fri","friday","sat","saturday","sun","sunday","lookupRelative","relText","relativeNumbers","last","previous","this","first","next","second","third","fourth","fifth","sixth","seventh","eight","eighth","ninth","tenth","eleventh","twelfth","relativeBehavior","relTextLower","amount","behavior","processTzCorrection","tzOffset","oldValue","reTzCorrectionLoose","match","sign","hours","minutes","Math","floor","tzAbbrOffsets","acdt","acst","addt","adt","aedt","aest","ahdt","ahst","akdt","akst","amt","apt","ast","awdt","awst","awt","bdst","bdt","bmt","bst","cast","cat","cddt","cdt","cemt","cest","cet","cmt","cpt","cst","cwt","chst","dmt","eat","eddt","edt","eest","eet","emt","ept","est","ewt","ffmt","fmt","gdt","gmt","gst","hdt","hkst","hkt","hmt","hpt","hst","hwt","iddt","idt","imt","ist","jdt","jmt","jst","kdt","kmt","kst","lst","mddt","mdst","mdt","mest","met","mmt","mpt","msd","msk","mst","mwt","nddt","ndt","npt","nst","nwt","nzdt","nzmt","nzst","pddt","pdt","pkst","pkt","plmt","pmt","ppmt","ppt","pst","pwt","qmt","rmt","sast","sdmt","sjmt","smt","sst","tbmt","tmt","uct","utc","wast","wat","wemt","west","wet","wib","wita","wit","wmt","yddt","ydt","ypt","yst","ywt","a","b","c","d","e","f","g","h","k","l","m","n","o","p","q","r","s","t","u","w","y","z","formats","yesterday","regex","name","callback","rd","resetTime","now","noon","time","midnightOrToday","tomorrow","timestamp","rs","dates","zone","firstOrLastDay","day","firstOrLastDayOfMonth","backOrFrontOf","RegExp","side","back","minute","weekdayOf","mssqltime","frac","substr","oracledate","monthText","month","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","toUpperCase","ymd","parseInt","timeLong12","timeShort12","timeTiny12","soap","tzCorrection","wddx","exif","xmlRpc","xmlRpcNoColon","clf","iso8601long","dateTextual","pointedDate4","pointedDate2","timeLong24","dateNoColon","pgydotd","timeShort24","iso8601noColon","iso8601dateSlash","dateSlash","american","americanShort","gnuDateShortOrIso8601date2","iso8601date4","gnuNoColon","times","gnuDateShorter","pgTextReverse","dateFull","dateNoDay","dateNoDayRev","pgTextShort","dateNoYear","dateNoYearRev","isoWeekDay","week","dayOfWeek","Date","getDay","relativeText","relValue","relUnit","ri","rh","rm","ry","weekday","weekdayBehavior","relative","signs","minuses","replace","pow","dayText","relativeTextWeek","isNaN","monthFullOrMonthAbbr","tzAbbr","abbr","offset","ago","rf","year4","whitespace","dateShortWithTimeLong","dateShortWithTimeLong12","dateShortWithTimeShort","dateShortWithTimeShort12","resultProto","NaN","zones","toDate","relativeTo","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","date","getTime","setFullYear","setHours","dow","diff","abs","result","setDate","setMonth","getTimezoneOffset","setUTCFullYear","setUTCHours","module","exports","strtotime","str","rules","Object","create","longestMatch","finalRule","format","apply"],"mappings":"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","file":"strtotime.js","sourcesContent":["const reSpace = '[ \\\\t]+'\nconst reSpaceOpt = '[ \\\\t]*'\nconst reMeridian = '(?:([ap])\\\\.?m\\\\.?([\\\\t ]|$))'\nconst reHour24 = '(2[0-4]|[01]?[0-9])'\nconst reHour24lz = '([01][0-9]|2[0-4])'\nconst reHour12 = '(0?[1-9]|1[0-2])'\nconst reMinute = '([0-5]?[0-9])'\nconst reMinutelz = '([0-5][0-9])'\nconst reSecond = '(60|[0-5]?[0-9])'\nconst reSecondlz = '(60|[0-5][0-9])'\nconst reFrac = '(?:\\\\.([0-9]+))'\n\nconst reDayfull = 'sunday|monday|tuesday|wednesday|thursday|friday|saturday'\nconst reDayabbr = 'sun|mon|tue|wed|thu|fri|sat'\nconst reDaytext = reDayfull + '|' + reDayabbr + '|weekdays?'\n\nconst reReltextnumber = 'first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth'\nconst reReltexttext = 'next|last|previous|this'\nconst reReltextunit = '(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|' + reDaytext\n\nconst reYear = '([0-9]{1,4})'\nconst reYear2 = '([0-9]{2})'\nconst reYear4 = '([0-9]{4})'\nconst reYear4withSign = '([+-]?[0-9]{4})'\nconst reMonth = '(1[0-2]|0?[0-9])'\nconst reMonthlz = '(0[0-9]|1[0-2])'\nconst reDay = '(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)'\nconst reDaylz = '(0[0-9]|[1-2][0-9]|3[01])'\n\nconst reMonthFull = 'january|february|march|april|may|june|july|august|september|october|november|december'\nconst reMonthAbbr = 'jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec'\nconst reMonthroman = 'i[vx]|vi{0,3}|xi{0,2}|i{1,3}'\nconst reMonthText = '(' + reMonthFull + '|' + reMonthAbbr + '|' + reMonthroman + ')'\n\nconst reTzCorrection = '((?:GMT)?([+-])' + reHour24 + ':?' + reMinute + '?)'\nconst reTzAbbr = '\\\\(?([a-zA-Z]{1,6})\\\\)?'\nconst reDayOfYear = '(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])'\nconst reWeekOfYear = '(0[1-9]|[1-4][0-9]|5[0-3])'\n\nconst reDateNoYear = reMonthText + '[ .\\\\t-]*' + reDay + '[,.stndrh\\\\t ]*'\n\nfunction processMeridian(hour, meridian) {\n meridian = meridian && meridian.toLowerCase()\n\n switch (meridian) {\n case 'a':\n hour += hour === 12 ? -12 : 0\n break\n case 'p':\n hour += hour !== 12 ? 12 : 0\n break\n }\n\n return hour\n}\n\nfunction processYear(yearStr) {\n let year = +yearStr\n\n if (yearStr.length < 4 && year < 100) {\n year += year < 70 ? 2000 : 1900\n }\n\n return year\n}\n\nfunction lookupMonth(monthStr) {\n return {\n jan: 0,\n january: 0,\n i: 0,\n feb: 1,\n february: 1,\n ii: 1,\n mar: 2,\n march: 2,\n iii: 2,\n apr: 3,\n april: 3,\n iv: 3,\n may: 4,\n v: 4,\n jun: 5,\n june: 5,\n vi: 5,\n jul: 6,\n july: 6,\n vii: 6,\n aug: 7,\n august: 7,\n viii: 7,\n sep: 8,\n sept: 8,\n september: 8,\n ix: 8,\n oct: 9,\n october: 9,\n x: 9,\n nov: 10,\n november: 10,\n xi: 10,\n dec: 11,\n december: 11,\n xii: 11,\n }[monthStr.toLowerCase()]\n}\n\nfunction lookupWeekday(dayStr, desiredSundayNumber = 0) {\n const dayNumbers = {\n mon: 1,\n monday: 1,\n tue: 2,\n tuesday: 2,\n wed: 3,\n wednesday: 3,\n thu: 4,\n thursday: 4,\n fri: 5,\n friday: 5,\n sat: 6,\n saturday: 6,\n sun: 0,\n sunday: 0,\n }\n\n return dayNumbers[dayStr.toLowerCase()] || desiredSundayNumber\n}\n\nfunction lookupRelative(relText) {\n const relativeNumbers = {\n last: -1,\n previous: -1,\n this: 0,\n first: 1,\n next: 1,\n second: 2,\n third: 3,\n fourth: 4,\n fifth: 5,\n sixth: 6,\n seventh: 7,\n eight: 8,\n eighth: 8,\n ninth: 9,\n tenth: 10,\n eleventh: 11,\n twelfth: 12,\n }\n\n const relativeBehavior = {\n this: 1,\n }\n\n const relTextLower = relText.toLowerCase()\n\n return {\n amount: relativeNumbers[relTextLower],\n behavior: relativeBehavior[relTextLower] || 0,\n }\n}\n\nfunction processTzCorrection(tzOffset, oldValue) {\n const reTzCorrectionLoose = /(?:GMT)?([+-])(\\d+)(:?)(\\d{0,2})/i\n tzOffset = tzOffset && tzOffset.match(reTzCorrectionLoose)\n\n if (!tzOffset) {\n return oldValue\n }\n\n const sign = tzOffset[1] === '-' ? -1 : 1\n let hours = +tzOffset[2]\n let minutes = +tzOffset[4]\n\n if (!tzOffset[4] && !tzOffset[3]) {\n minutes = Math.floor(hours % 100)\n hours = Math.floor(hours / 100)\n }\n\n // timezone offset in seconds\n return sign * (hours * 60 + minutes) * 60\n}\n\n// tz abbrevation : tz offset in seconds\nconst tzAbbrOffsets = {\n acdt: 37800,\n acst: 34200,\n addt: -7200,\n adt: -10800,\n aedt: 39600,\n aest: 36000,\n ahdt: -32400,\n ahst: -36000,\n akdt: -28800,\n akst: -32400,\n amt: -13840,\n apt: -10800,\n ast: -14400,\n awdt: 32400,\n awst: 28800,\n awt: -10800,\n bdst: 7200,\n bdt: -36000,\n bmt: -14309,\n bst: 3600,\n cast: 34200,\n cat: 7200,\n cddt: -14400,\n cdt: -18000,\n cemt: 10800,\n cest: 7200,\n cet: 3600,\n cmt: -15408,\n cpt: -18000,\n cst: -21600,\n cwt: -18000,\n chst: 36000,\n dmt: -1521,\n eat: 10800,\n eddt: -10800,\n edt: -14400,\n eest: 10800,\n eet: 7200,\n emt: -26248,\n ept: -14400,\n est: -18000,\n ewt: -14400,\n ffmt: -14660,\n fmt: -4056,\n gdt: 39600,\n gmt: 0,\n gst: 36000,\n hdt: -34200,\n hkst: 32400,\n hkt: 28800,\n hmt: -19776,\n hpt: -34200,\n hst: -36000,\n hwt: -34200,\n iddt: 14400,\n idt: 10800,\n imt: 25025,\n ist: 7200,\n jdt: 36000,\n jmt: 8440,\n jst: 32400,\n kdt: 36000,\n kmt: 5736,\n kst: 30600,\n lst: 9394,\n mddt: -18000,\n mdst: 16279,\n mdt: -21600,\n mest: 7200,\n met: 3600,\n mmt: 9017,\n mpt: -21600,\n msd: 14400,\n msk: 10800,\n mst: -25200,\n mwt: -21600,\n nddt: -5400,\n ndt: -9052,\n npt: -9000,\n nst: -12600,\n nwt: -9000,\n nzdt: 46800,\n nzmt: 41400,\n nzst: 43200,\n pddt: -21600,\n pdt: -25200,\n pkst: 21600,\n pkt: 18000,\n plmt: 25590,\n pmt: -13236,\n ppmt: -17340,\n ppt: -25200,\n pst: -28800,\n pwt: -25200,\n qmt: -18840,\n rmt: 5794,\n sast: 7200,\n sdmt: -16800,\n sjmt: -20173,\n smt: -13884,\n sst: -39600,\n tbmt: 10751,\n tmt: 12344,\n uct: 0,\n utc: 0,\n wast: 7200,\n wat: 3600,\n wemt: 7200,\n west: 3600,\n wet: 0,\n wib: 25200,\n wita: 28800,\n wit: 32400,\n wmt: 5040,\n yddt: -25200,\n ydt: -28800,\n ypt: -28800,\n yst: -32400,\n ywt: -28800,\n a: 3600,\n b: 7200,\n c: 10800,\n d: 14400,\n e: 18000,\n f: 21600,\n g: 25200,\n h: 28800,\n i: 32400,\n k: 36000,\n l: 39600,\n m: 43200,\n n: -3600,\n o: -7200,\n p: -10800,\n q: -14400,\n r: -18000,\n s: -21600,\n t: -25200,\n u: -28800,\n v: -32400,\n w: -36000,\n x: -39600,\n y: -43200,\n z: 0,\n}\n\nconst formats = {\n yesterday: {\n regex: /^yesterday/i,\n name: 'yesterday',\n callback() {\n this.rd -= 1\n return this.resetTime()\n },\n },\n\n now: {\n regex: /^now/i,\n name: 'now',\n // do nothing\n },\n\n noon: {\n regex: /^noon/i,\n name: 'noon',\n callback() {\n return this.resetTime() && this.time(12, 0, 0, 0)\n },\n },\n\n midnightOrToday: {\n regex: /^(midnight|today)/i,\n name: 'midnight | today',\n callback() {\n return this.resetTime()\n },\n },\n\n tomorrow: {\n regex: /^tomorrow/i,\n name: 'tomorrow',\n callback() {\n this.rd += 1\n return this.resetTime()\n },\n },\n\n timestamp: {\n regex: /^@(-?\\d+)/i,\n name: 'timestamp',\n callback(match, timestamp) {\n this.rs += +timestamp\n this.y = 1970\n this.m = 0\n this.d = 1\n this.dates = 0\n\n return this.resetTime() && this.zone(0)\n },\n },\n\n firstOrLastDay: {\n regex: /^(first|last) day of/i,\n name: 'firstdayof | lastdayof',\n callback(match, day) {\n if (day.toLowerCase() === 'first') {\n this.firstOrLastDayOfMonth = 1\n } else {\n this.firstOrLastDayOfMonth = -1\n }\n },\n },\n\n backOrFrontOf: {\n regex: RegExp('^(back|front) of ' + reHour24 + reSpaceOpt + reMeridian + '?', 'i'),\n name: 'backof | frontof',\n callback(match, side, hours, meridian) {\n const back = side.toLowerCase() === 'back'\n let hour = +hours\n let minute = 15\n\n if (!back) {\n hour -= 1\n minute = 45\n }\n\n hour = processMeridian(hour, meridian)\n\n return this.resetTime() && this.time(hour, minute, 0, 0)\n },\n },\n\n weekdayOf: {\n regex: RegExp(\n '^(' +\n reReltextnumber +\n '|' +\n reReltexttext +\n ')' +\n reSpace +\n '(' +\n reDayfull +\n '|' +\n reDayabbr +\n ')' +\n reSpace +\n 'of',\n 'i',\n ),\n name: 'weekdayof',\n // todo\n },\n\n mssqltime: {\n regex: RegExp('^' + reHour12 + ':' + reMinutelz + ':' + reSecondlz + '[:.]([0-9]+)' + reMeridian, 'i'),\n name: 'mssqltime',\n callback(match, hour, minute, second, frac, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, +second, +frac.substr(0, 3))\n },\n },\n\n oracledate: {\n regex: /^(\\d{2})-([A-Z]{3})-(\\d{2})$/i,\n name: 'd-M-y',\n callback(match, day, monthText, year) {\n const month = {\n JAN: 0,\n FEB: 1,\n MAR: 2,\n APR: 3,\n MAY: 4,\n JUN: 5,\n JUL: 6,\n AUG: 7,\n SEP: 8,\n OCT: 9,\n NOV: 10,\n DEC: 11,\n }[monthText.toUpperCase()]\n return this.ymd(2000 + parseInt(year, 10), month, parseInt(day, 10))\n },\n },\n\n timeLong12: {\n regex: RegExp('^' + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),\n name: 'timelong12',\n callback(match, hour, minute, second, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, +second, 0)\n },\n },\n\n timeShort12: {\n regex: RegExp('^' + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),\n name: 'timeshort12',\n callback(match, hour, minute, meridian) {\n return this.time(processMeridian(+hour, meridian), +minute, 0, 0)\n },\n },\n\n timeTiny12: {\n regex: RegExp('^' + reHour12 + reSpaceOpt + reMeridian, 'i'),\n name: 'timetiny12',\n callback(match, hour, meridian) {\n return this.time(processMeridian(+hour, meridian), 0, 0, 0)\n },\n },\n\n soap: {\n regex: RegExp(\n '^' +\n reYear4 +\n '-' +\n reMonthlz +\n '-' +\n reDaylz +\n 'T' +\n reHour24lz +\n ':' +\n reMinutelz +\n ':' +\n reSecondlz +\n reFrac +\n reTzCorrection +\n '?',\n 'i',\n ),\n name: 'soap',\n callback(match, year, month, day, hour, minute, second, frac, tzCorrection) {\n return (\n this.ymd(+year, month - 1, +day) &&\n this.time(+hour, +minute, +second, +frac.substr(0, 3)) &&\n this.zone(processTzCorrection(tzCorrection))\n )\n },\n },\n\n wddx: {\n regex: RegExp('^' + reYear4 + '-' + reMonth + '-' + reDay + 'T' + reHour24 + ':' + reMinute + ':' + reSecond),\n name: 'wddx',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n exif: {\n regex: RegExp(\n '^' + reYear4 + ':' + reMonthlz + ':' + reDaylz + ' ' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz,\n 'i',\n ),\n name: 'exif',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n xmlRpc: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + 'T' + reHour24 + ':' + reMinutelz + ':' + reSecondlz),\n name: 'xmlrpc',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n xmlRpcNoColon: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + '[Tt]' + reHour24 + reMinutelz + reSecondlz),\n name: 'xmlrpcnocolon',\n callback(match, year, month, day, hour, minute, second) {\n return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n clf: {\n regex: RegExp(\n '^' +\n reDay +\n '/(' +\n reMonthAbbr +\n ')/' +\n reYear4 +\n ':' +\n reHour24lz +\n ':' +\n reMinutelz +\n ':' +\n reSecondlz +\n reSpace +\n reTzCorrection,\n 'i',\n ),\n name: 'clf',\n callback(match, day, month, year, hour, minute, second, tzCorrection) {\n return (\n this.ymd(+year, lookupMonth(month), +day) &&\n this.time(+hour, +minute, +second, 0) &&\n this.zone(processTzCorrection(tzCorrection))\n )\n },\n },\n\n iso8601long: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond + reFrac, 'i'),\n name: 'iso8601long',\n callback(match, hour, minute, second, frac) {\n return this.time(+hour, +minute, +second, +frac.substr(0, 3))\n },\n },\n\n dateTextual: {\n regex: RegExp('^' + reMonthText + '[ .\\\\t-]*' + reDay + '[,.stndrh\\\\t ]+' + reYear, 'i'),\n name: 'datetextual',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n pointedDate4: {\n regex: RegExp('^' + reDay + '[.\\\\t-]' + reMonth + '[.-]' + reYear4),\n name: 'pointeddate4',\n callback(match, day, month, year) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n pointedDate2: {\n regex: RegExp('^' + reDay + '[.\\\\t]' + reMonth + '\\\\.' + reYear2),\n name: 'pointeddate2',\n callback(match, day, month, year) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n timeLong24: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond),\n name: 'timelong24',\n callback(match, hour, minute, second) {\n return this.time(+hour, +minute, +second, 0)\n },\n },\n\n dateNoColon: {\n regex: RegExp('^' + reYear4 + reMonthlz + reDaylz),\n name: 'datenocolon',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n pgydotd: {\n regex: RegExp('^' + reYear4 + '\\\\.?' + reDayOfYear),\n name: 'pgydotd',\n callback(match, year, day) {\n return this.ymd(+year, 0, +day)\n },\n },\n\n timeShort24: {\n regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute, 'i'),\n name: 'timeshort24',\n callback(match, hour, minute) {\n return this.time(+hour, +minute, 0, 0)\n },\n },\n\n iso8601noColon: {\n regex: RegExp('^t?' + reHour24lz + reMinutelz + reSecondlz, 'i'),\n name: 'iso8601nocolon',\n callback(match, hour, minute, second) {\n return this.time(+hour, +minute, +second, 0)\n },\n },\n\n iso8601dateSlash: {\n // eventhough the trailing slash is optional in PHP\n // here it's mandatory and inputs without the slash\n // are handled by dateslash\n regex: RegExp('^' + reYear4 + '/' + reMonthlz + '/' + reDaylz + '/'),\n name: 'iso8601dateslash',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n dateSlash: {\n regex: RegExp('^' + reYear4 + '/' + reMonth + '/' + reDay),\n name: 'dateslash',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n american: {\n regex: RegExp('^' + reMonth + '/' + reDay + '/' + reYear),\n name: 'american',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n americanShort: {\n regex: RegExp('^' + reMonth + '/' + reDay),\n name: 'americanshort',\n callback(match, month, day) {\n return this.ymd(this.y, month - 1, +day)\n },\n },\n\n gnuDateShortOrIso8601date2: {\n // iso8601date2 is complete subset of gnudateshort\n regex: RegExp('^' + reYear + '-' + reMonth + '-' + reDay),\n name: 'gnudateshort | iso8601date2',\n callback(match, year, month, day) {\n return this.ymd(processYear(year), month - 1, +day)\n },\n },\n\n iso8601date4: {\n regex: RegExp('^' + reYear4withSign + '-' + reMonthlz + '-' + reDaylz),\n name: 'iso8601date4',\n callback(match, year, month, day) {\n return this.ymd(+year, month - 1, +day)\n },\n },\n\n gnuNoColon: {\n regex: RegExp('^t?' + reHour24lz + reMinutelz, 'i'),\n name: 'gnunocolon',\n callback(match, hour, minute) {\n // this rule is a special case\n // if time was already set once by any preceding rule, it sets the captured value as year\n switch (this.times) {\n case 0:\n return this.time(+hour, +minute, 0, this.f)\n case 1:\n this.y = hour * 100 + +minute\n this.times++\n\n return true\n default:\n return false\n }\n },\n },\n\n gnuDateShorter: {\n regex: RegExp('^' + reYear4 + '-' + reMonth),\n name: 'gnudateshorter',\n callback(match, year, month) {\n return this.ymd(+year, month - 1, 1)\n },\n },\n\n pgTextReverse: {\n // note: allowed years are from 32-9999\n // years below 32 should be treated as days in datefull\n regex: RegExp('^' + '(\\\\d{3,4}|[4-9]\\\\d|3[2-9])-(' + reMonthAbbr + ')-' + reDaylz, 'i'),\n name: 'pgtextreverse',\n callback(match, year, month, day) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateFull: {\n regex: RegExp('^' + reDay + '[ \\\\t.-]*' + reMonthText + '[ \\\\t.-]*' + reYear, 'i'),\n name: 'datefull',\n callback(match, day, month, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateNoDay: {\n regex: RegExp('^' + reMonthText + '[ .\\\\t-]*' + reYear4, 'i'),\n name: 'datenoday',\n callback(match, month, year) {\n return this.ymd(+year, lookupMonth(month), 1)\n },\n },\n\n dateNoDayRev: {\n regex: RegExp('^' + reYear4 + '[ .\\\\t-]*' + reMonthText, 'i'),\n name: 'datenodayrev',\n callback(match, year, month) {\n return this.ymd(+year, lookupMonth(month), 1)\n },\n },\n\n pgTextShort: {\n regex: RegExp('^(' + reMonthAbbr + ')-' + reDaylz + '-' + reYear, 'i'),\n name: 'pgtextshort',\n callback(match, month, day, year) {\n return this.ymd(processYear(year), lookupMonth(month), +day)\n },\n },\n\n dateNoYear: {\n regex: RegExp('^' + reDateNoYear, 'i'),\n name: 'datenoyear',\n callback(match, month, day) {\n return this.ymd(this.y, lookupMonth(month), +day)\n },\n },\n\n dateNoYearRev: {\n regex: RegExp('^' + reDay + '[ .\\\\t-]*' + reMonthText, 'i'),\n name: 'datenoyearrev',\n callback(match, day, month) {\n return this.ymd(this.y, lookupMonth(month), +day)\n },\n },\n\n isoWeekDay: {\n regex: RegExp('^' + reYear4 + '-?W' + reWeekOfYear + '(?:-?([0-7]))?'),\n name: 'isoweekday | isoweek',\n callback(match, year, week, day) {\n day = day ? +day : 1\n\n if (!this.ymd(+year, 0, 1)) {\n return false\n }\n\n // get day of week for Jan 1st\n let dayOfWeek = new Date(this.y, this.m, this.d).getDay()\n\n // and use the day to figure out the offset for day 1 of week 1\n dayOfWeek = 0 - (dayOfWeek > 4 ? dayOfWeek - 7 : dayOfWeek)\n\n this.rd += dayOfWeek + (week - 1) * 7 + day\n },\n },\n\n relativeText: {\n regex: RegExp('^(' + reReltextnumber + '|' + reReltexttext + ')' + reSpace + '(' + reReltextunit + ')', 'i'),\n name: 'relativetext',\n callback(match, relValue, relUnit) {\n // todo: implement handling of 'this time-unit'\n // eslint-disable-next-line no-unused-vars\n const { amount, behavior } = lookupRelative(relValue)\n\n switch (relUnit.toLowerCase()) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n this.rs += amount\n break\n case 'min':\n case 'mins':\n case 'minute':\n case 'minutes':\n this.ri += amount\n break\n case 'hour':\n case 'hours':\n this.rh += amount\n break\n case 'day':\n case 'days':\n this.rd += amount\n break\n case 'fortnight':\n case 'fortnights':\n case 'forthnight':\n case 'forthnights':\n this.rd += amount * 14\n break\n case 'week':\n case 'weeks':\n this.rd += amount * 7\n break\n case 'month':\n case 'months':\n this.rm += amount\n break\n case 'year':\n case 'years':\n this.ry += amount\n break\n case 'mon':\n case 'monday':\n case 'tue':\n case 'tuesday':\n case 'wed':\n case 'wednesday':\n case 'thu':\n case 'thursday':\n case 'fri':\n case 'friday':\n case 'sat':\n case 'saturday':\n case 'sun':\n case 'sunday':\n this.resetTime()\n this.weekday = lookupWeekday(relUnit, 7)\n this.weekdayBehavior = 1\n this.rd += (amount > 0 ? amount - 1 : amount) * 7\n break\n case 'weekday':\n case 'weekdays':\n // todo\n break\n }\n },\n },\n\n relative: {\n regex: RegExp('^([+-]*)[ \\\\t]*(\\\\d+)' + reSpaceOpt + '(' + reReltextunit + '|week)', 'i'),\n name: 'relative',\n callback(match, signs, relValue, relUnit) {\n const minuses = signs.replace(/[^-]/g, '').length\n\n const amount = +relValue * Math.pow(-1, minuses)\n\n switch (relUnit.toLowerCase()) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n this.rs += amount\n break\n case 'min':\n case 'mins':\n case 'minute':\n case 'minutes':\n this.ri += amount\n break\n case 'hour':\n case 'hours':\n this.rh += amount\n break\n case 'day':\n case 'days':\n this.rd += amount\n break\n case 'fortnight':\n case 'fortnights':\n case 'forthnight':\n case 'forthnights':\n this.rd += amount * 14\n break\n case 'week':\n case 'weeks':\n this.rd += amount * 7\n break\n case 'month':\n case 'months':\n this.rm += amount\n break\n case 'year':\n case 'years':\n this.ry += amount\n break\n case 'mon':\n case 'monday':\n case 'tue':\n case 'tuesday':\n case 'wed':\n case 'wednesday':\n case 'thu':\n case 'thursday':\n case 'fri':\n case 'friday':\n case 'sat':\n case 'saturday':\n case 'sun':\n case 'sunday':\n this.resetTime()\n this.weekday = lookupWeekday(relUnit, 7)\n this.weekdayBehavior = 1\n this.rd += (amount > 0 ? amount - 1 : amount) * 7\n break\n case 'weekday':\n case 'weekdays':\n // todo\n break\n }\n },\n },\n\n dayText: {\n regex: RegExp('^(' + reDaytext + ')', 'i'),\n name: 'daytext',\n callback(match, dayText) {\n this.resetTime()\n this.weekday = lookupWeekday(dayText, 0)\n\n if (this.weekdayBehavior !== 2) {\n this.weekdayBehavior = 1\n }\n },\n },\n\n relativeTextWeek: {\n regex: RegExp('^(' + reReltexttext + ')' + reSpace + 'week', 'i'),\n name: 'relativetextweek',\n callback(match, relText) {\n this.weekdayBehavior = 2\n\n switch (relText.toLowerCase()) {\n case 'this':\n this.rd += 0\n break\n case 'next':\n this.rd += 7\n break\n case 'last':\n case 'previous':\n this.rd -= 7\n break\n }\n\n if (isNaN(this.weekday)) {\n this.weekday = 1\n }\n },\n },\n\n monthFullOrMonthAbbr: {\n regex: RegExp('^(' + reMonthFull + '|' + reMonthAbbr + ')', 'i'),\n name: 'monthfull | monthabbr',\n callback(match, month) {\n return this.ymd(this.y, lookupMonth(month), this.d)\n },\n },\n\n tzCorrection: {\n regex: RegExp('^' + reTzCorrection, 'i'),\n name: 'tzcorrection',\n callback(tzCorrection) {\n return this.zone(processTzCorrection(tzCorrection))\n },\n },\n\n tzAbbr: {\n regex: RegExp('^' + reTzAbbr),\n name: 'tzabbr',\n callback(match, abbr) {\n const offset = tzAbbrOffsets[abbr.toLowerCase()]\n\n if (isNaN(offset)) {\n return false\n }\n\n return this.zone(offset)\n },\n },\n\n ago: {\n regex: /^ago/i,\n name: 'ago',\n callback() {\n this.ry = -this.ry\n this.rm = -this.rm\n this.rd = -this.rd\n this.rh = -this.rh\n this.ri = -this.ri\n this.rs = -this.rs\n this.rf = -this.rf\n },\n },\n\n year4: {\n regex: RegExp('^' + reYear4),\n name: 'year4',\n callback(match, year) {\n this.y = +year\n return true\n },\n },\n\n whitespace: {\n regex: /^[ .,\\t]+/,\n name: 'whitespace',\n // do nothing\n },\n\n dateShortWithTimeLong: {\n regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond, 'i'),\n name: 'dateshortwithtimelong',\n callback(match, month, day, hour, minute, second) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, +second, 0)\n },\n },\n\n dateShortWithTimeLong12: {\n regex: RegExp(\n '^' + reDateNoYear + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian,\n 'i',\n ),\n name: 'dateshortwithtimelong12',\n callback(match, month, day, hour, minute, second, meridian) {\n return (\n this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, +second, 0)\n )\n },\n },\n\n dateShortWithTimeShort: {\n regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute, 'i'),\n name: 'dateshortwithtimeshort',\n callback(match, month, day, hour, minute) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, 0, 0)\n },\n },\n\n dateShortWithTimeShort12: {\n regex: RegExp('^' + reDateNoYear + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),\n name: 'dateshortwithtimeshort12',\n callback(match, month, day, hour, minute, meridian) {\n return this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, 0, 0)\n },\n },\n}\n\nconst resultProto = {\n // date\n y: NaN,\n m: NaN,\n d: NaN,\n // time\n h: NaN,\n i: NaN,\n s: NaN,\n f: NaN,\n\n // relative shifts\n ry: 0,\n rm: 0,\n rd: 0,\n rh: 0,\n ri: 0,\n rs: 0,\n rf: 0,\n\n // weekday related shifts\n weekday: NaN,\n weekdayBehavior: 0,\n\n // first or last day of month\n // 0 none, 1 first, -1 last\n firstOrLastDayOfMonth: 0,\n\n // timezone correction in minutes\n z: NaN,\n\n // counters\n dates: 0,\n times: 0,\n zones: 0,\n\n // helper functions\n ymd(y, m, d) {\n if (this.dates > 0) {\n return false\n }\n\n this.dates++\n this.y = y\n this.m = m\n this.d = d\n return true\n },\n\n time(h, i, s, f) {\n if (this.times > 0) {\n return false\n }\n\n this.times++\n this.h = h\n this.i = i\n this.s = s\n this.f = f\n\n return true\n },\n\n resetTime() {\n this.h = 0\n this.i = 0\n this.s = 0\n this.f = 0\n this.times = 0\n\n return true\n },\n\n zone(minutes) {\n if (this.zones <= 1) {\n this.zones++\n this.z = minutes\n return true\n }\n\n return false\n },\n\n toDate(relativeTo) {\n if (this.dates && !this.times) {\n this.h = this.i = this.s = this.f = 0\n }\n\n // fill holes\n if (isNaN(this.y)) {\n this.y = relativeTo.getFullYear()\n }\n\n if (isNaN(this.m)) {\n this.m = relativeTo.getMonth()\n }\n\n if (isNaN(this.d)) {\n this.d = relativeTo.getDate()\n }\n\n if (isNaN(this.h)) {\n this.h = relativeTo.getHours()\n }\n\n if (isNaN(this.i)) {\n this.i = relativeTo.getMinutes()\n }\n\n if (isNaN(this.s)) {\n this.s = relativeTo.getSeconds()\n }\n\n if (isNaN(this.f)) {\n this.f = relativeTo.getMilliseconds()\n }\n\n // adjust special early\n switch (this.firstOrLastDayOfMonth) {\n case 1:\n this.d = 1\n break\n case -1:\n this.d = 0\n this.m += 1\n break\n }\n\n if (!isNaN(this.weekday)) {\n const date = new Date(relativeTo.getTime())\n date.setFullYear(this.y, this.m, this.d)\n date.setHours(this.h, this.i, this.s, this.f)\n\n const dow = date.getDay()\n\n if (this.weekdayBehavior === 2) {\n // To make \"this week\" work, where the current day of week is a \"sunday\"\n if (dow === 0 && this.weekday !== 0) {\n this.weekday = -6\n }\n\n // To make \"sunday this week\" work, where the current day of week is not a \"sunday\"\n if (this.weekday === 0 && dow !== 0) {\n this.weekday = 7\n }\n\n this.d -= dow\n this.d += this.weekday\n } else {\n let diff = this.weekday - dow\n\n // some PHP magic\n if ((this.rd < 0 && diff < 0) || (this.rd >= 0 && diff <= -this.weekdayBehavior)) {\n diff += 7\n }\n\n if (this.weekday >= 0) {\n this.d += diff\n } else {\n this.d -= 7 - (Math.abs(this.weekday) - dow)\n }\n\n this.weekday = NaN\n }\n }\n\n // adjust relative\n this.y += this.ry\n this.m += this.rm\n this.d += this.rd\n\n this.h += this.rh\n this.i += this.ri\n this.s += this.rs\n this.f += this.rf\n\n this.ry = this.rm = this.rd = 0\n this.rh = this.ri = this.rs = this.rf = 0\n\n const result = new Date(relativeTo.getTime())\n // since Date constructor treats years <= 99 as 1900+\n // it can't be used, thus this weird way\n result.setFullYear(this.y, this.m, this.d)\n result.setHours(this.h, this.i, this.s, this.f)\n\n // note: this is done twice in PHP\n // early when processing special relatives\n // and late\n // todo: check if the logic can be reduced\n // to just one time action\n switch (this.firstOrLastDayOfMonth) {\n case 1:\n result.setDate(1)\n break\n case -1:\n result.setMonth(result.getMonth() + 1, 0)\n break\n }\n\n // adjust timezone\n if (!isNaN(this.z) && result.getTimezoneOffset() !== this.z) {\n result.setUTCFullYear(result.getFullYear(), result.getMonth(), result.getDate())\n\n result.setUTCHours(result.getHours(), result.getMinutes(), result.getSeconds() - this.z, result.getMilliseconds())\n }\n\n return result\n },\n}\n\nmodule.exports = function strtotime(str, now) {\n // discuss at: https://locutus.io/php/strtotime/\n // original by: Caio Ariede (https://caioariede.com)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Caio Ariede (https://caioariede.com)\n // improved by: A. Matías Quezada (https://amatiasq.com)\n // improved by: preuter\n // improved by: Brett Zamir (https://brett-zamir.me)\n // improved by: Mirko Faber\n // input by: David\n // bugfixed by: Wagner B. Soares\n // bugfixed by: Artur Tchernychev\n // bugfixed by: Stephan Bösch-Plepelits (https://github.com/plepe)\n // reimplemented by: Rafał Kukawski\n // note 1: Examples all have a fixed timestamp to prevent\n // note 1: tests to fail because of variable time(zones)\n // example 1: strtotime('+1 day', 1129633200)\n // returns 1: 1129719600\n // example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200)\n // returns 2: 1130425202\n // example 3: strtotime('last month', 1129633200)\n // returns 3: 1127041200\n // example 4: strtotime('2009-05-04 08:30:00+00')\n // returns 4: 1241425800\n // example 5: strtotime('2009-05-04 08:30:00+02:00')\n // returns 5: 1241418600\n // example 6: strtotime('2009-05-04 08:30:00 YWT')\n // returns 6: 1241454600\n // example 7: strtotime('10-JUL-17')\n // returns 7: 1499644800\n\n if (now == null) {\n now = Math.floor(Date.now() / 1000)\n }\n\n // the rule order is important\n // if multiple rules match, the longest match wins\n // if multiple rules match the same string, the first match wins\n const rules = [\n formats.yesterday,\n formats.now,\n formats.noon,\n formats.midnightOrToday,\n formats.tomorrow,\n formats.timestamp,\n formats.firstOrLastDay,\n formats.backOrFrontOf,\n // formats.weekdayOf, // not yet implemented\n formats.timeTiny12,\n formats.timeShort12,\n formats.timeLong12,\n formats.mssqltime,\n formats.oracledate,\n formats.timeShort24,\n formats.timeLong24,\n formats.iso8601long,\n formats.gnuNoColon,\n formats.iso8601noColon,\n formats.americanShort,\n formats.american,\n formats.iso8601date4,\n formats.iso8601dateSlash,\n formats.dateSlash,\n formats.gnuDateShortOrIso8601date2,\n formats.gnuDateShorter,\n formats.dateFull,\n formats.pointedDate4,\n formats.pointedDate2,\n formats.dateNoDay,\n formats.dateNoDayRev,\n formats.dateTextual,\n formats.dateNoYear,\n formats.dateNoYearRev,\n formats.dateNoColon,\n formats.xmlRpc,\n formats.xmlRpcNoColon,\n formats.soap,\n formats.wddx,\n formats.exif,\n formats.pgydotd,\n formats.isoWeekDay,\n formats.pgTextShort,\n formats.pgTextReverse,\n formats.clf,\n formats.year4,\n formats.ago,\n formats.dayText,\n formats.relativeTextWeek,\n formats.relativeText,\n formats.monthFullOrMonthAbbr,\n formats.tzCorrection,\n formats.tzAbbr,\n formats.dateShortWithTimeShort12,\n formats.dateShortWithTimeLong12,\n formats.dateShortWithTimeShort,\n formats.dateShortWithTimeLong,\n formats.relative,\n formats.whitespace,\n ]\n\n const result = Object.create(resultProto)\n\n while (str.length) {\n let longestMatch = null\n let finalRule = null\n\n for (let i = 0, l = rules.length; i < l; i++) {\n const format = rules[i]\n\n const match = str.match(format.regex)\n\n if (match) {\n if (!longestMatch || match[0].length > longestMatch[0].length) {\n longestMatch = match\n finalRule = format\n }\n }\n }\n\n if (!finalRule || (finalRule.callback && finalRule.callback.apply(result, longestMatch) === false)) {\n return false\n }\n\n str = str.substr(longestMatch[0].length)\n finalRule = null\n longestMatch = null\n }\n\n return Math.floor(result.toDate(new Date(now * 1000)) / 1000)\n}\n"]}
|
|
@@ -17,10 +17,22 @@ module.exports = function escapeshellarg(arg) {
|
|
|
17
17
|
throw new Error('escapeshellarg(): Argument #1 ($arg) must not contain any null bytes');
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
// Check if the script is running on Windows
|
|
21
|
+
var isWindows = false;
|
|
22
|
+
if (typeof process !== 'undefined' && process.platform) {
|
|
23
|
+
isWindows = process.platform === 'win32';
|
|
24
|
+
}
|
|
25
|
+
if (typeof window !== 'undefined' && window.navigator.platform) {
|
|
26
|
+
isWindows = window.navigator.platform.indexOf('Win') !== -1;
|
|
27
|
+
}
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
if (isWindows) {
|
|
30
|
+
// Windows escaping strategy
|
|
31
|
+
// Double quotes need to be escaped and the whole argument enclosed in double quotes
|
|
32
|
+
return '"' + arg.replace(/(["%])/g, '^$1') + '"';
|
|
33
|
+
} else {
|
|
34
|
+
// Unix-like escaping strategy
|
|
35
|
+
return "'" + arg.replace(/'/g, "'\\''") + "'";
|
|
36
|
+
}
|
|
25
37
|
};
|
|
26
38
|
//# sourceMappingURL=escapeshellarg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/exec/escapeshellarg.js"],"names":["module","exports","escapeshellarg","arg","indexOf","Error","
|
|
1
|
+
{"version":3,"sources":["../../../src/php/exec/escapeshellarg.js"],"names":["module","exports","escapeshellarg","arg","indexOf","Error","isWindows","process","platform","window","navigator","replace"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,cAAT,CAAwBC,GAAxB,EAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIA,IAAIC,OAAJ,CAAY,MAAZ,MAAwB,CAAC,CAA7B,EAAgC;AAC9B,UAAM,IAAIC,KAAJ,CAAU,sEAAV,CAAN;AACD;;AAED;AACA,MAAIC,YAAY,KAAhB;AACA,MAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCA,QAAQC,QAA9C,EAAwD;AACtDF,gBAAYC,QAAQC,QAAR,KAAqB,OAAjC;AACD;AACD,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,OAAOC,SAAP,CAAiBF,QAAtD,EAAgE;AAC9DF,gBAAYG,OAAOC,SAAP,CAAiBF,QAAjB,CAA0BJ,OAA1B,CAAkC,KAAlC,MAA6C,CAAC,CAA1D;AACD;;AAED,MAAIE,SAAJ,EAAe;AACb;AACA;AACA,WAAO,MAAMH,IAAIQ,OAAJ,CAAY,SAAZ,EAAuB,KAAvB,CAAN,GAAsC,GAA7C;AACD,GAJD,MAIO;AACL;AACA,WAAO,MAAMR,IAAIQ,OAAJ,CAAY,IAAZ,EAAkB,OAAlB,CAAN,GAAmC,GAA1C;AACD;AACF,CAlCD","file":"escapeshellarg.js","sourcesContent":["module.exports = function escapeshellarg(arg) {\n // discuss at: https://locutus.io/php/escapeshellarg/\n // Warning: this function emulates escapeshellarg() for php-running-on-linux\n // the function behaves differently when running on Windows, which is not covered by this code.\n //\n // original by: Felix Geisendoerfer (https://www.debuggable.com/felix)\n // improved by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: divinity76 (https://github.com/divinity76)\n // example 1: escapeshellarg(\"kevin's birthday\")\n // returns 1: \"'kevin'\\\\''s birthday'\"\n // example 2: escapeshellarg(\"/home'; whoami;''\")\n // returns 2: \"'/home'\\\\''; whoami;'\\\\'''\\\\'''\"\n\n if (arg.indexOf('\\x00') !== -1) {\n throw new Error('escapeshellarg(): Argument #1 ($arg) must not contain any null bytes')\n }\n\n // Check if the script is running on Windows\n let isWindows = false\n if (typeof process !== 'undefined' && process.platform) {\n isWindows = process.platform === 'win32'\n }\n if (typeof window !== 'undefined' && window.navigator.platform) {\n isWindows = window.navigator.platform.indexOf('Win') !== -1\n }\n\n if (isWindows) {\n // Windows escaping strategy\n // Double quotes need to be escaped and the whole argument enclosed in double quotes\n return '\"' + arg.replace(/([\"%])/g, '^$1') + '\"'\n } else {\n // Unix-like escaping strategy\n return \"'\" + arg.replace(/'/g, \"'\\\\''\") + \"'\"\n }\n}\n"]}
|
package/php/math/fmod.js
CHANGED
|
@@ -5,8 +5,11 @@ module.exports = function fmod(x, y) {
|
|
|
5
5
|
// original by: Onno Marsman (https://twitter.com/onnomarsman)
|
|
6
6
|
// input by: Brett Zamir (https://brett-zamir.me)
|
|
7
7
|
// bugfixed by: Kevin van Zonneveld (https://kvz.io)
|
|
8
|
+
// bugfixed by: Irina (https://github.com/dekairi)
|
|
8
9
|
// example 1: fmod(5.7, 1.3)
|
|
9
10
|
// returns 1: 0.5
|
|
11
|
+
// example 2: fmod(10, 1)
|
|
12
|
+
// returns 2: 0
|
|
10
13
|
|
|
11
14
|
var tmp = void 0;
|
|
12
15
|
var tmp2 = void 0;
|
|
@@ -33,7 +36,7 @@ module.exports = function fmod(x, y) {
|
|
|
33
36
|
|
|
34
37
|
return (tmp2 / l2).toFixed(l - p) * l2;
|
|
35
38
|
} else {
|
|
36
|
-
return parseFloat(tmp2.toFixed(
|
|
39
|
+
return parseFloat(tmp2.toFixed(Math.abs(p)));
|
|
37
40
|
}
|
|
38
41
|
};
|
|
39
42
|
//# sourceMappingURL=fmod.js.map
|
package/php/math/fmod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/math/fmod.js"],"names":["module","exports","fmod","x","y","tmp","tmp2","p","pY","l","l2","toExponential","match","parseInt","length","Math","round","log","pow","toFixed","parseFloat"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,IAAT,CAAcC,CAAd,EAAiBC,CAAjB,EAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIC,YAAJ;AACA,MAAIC,aAAJ;AACA,MAAIC,IAAI,CAAR;AACA,MAAIC,KAAK,CAAT;AACA,MAAIC,IAAI,GAAR;AACA,MAAIC,KAAK,GAAT;;AAEAL,QAAMF,EAAEQ,aAAF,GAAkBC,KAAlB,CAAwB,iBAAxB,CAAN;AACAL,MAAIM,SAASR,IAAI,CAAJ,CAAT,EAAiB,EAAjB,IAAuB,CAACA,IAAI,CAAJ,IAAS,EAAV,EAAcS,MAAzC;AACAT,QAAMD,EAAEO,aAAF,GAAkBC,KAAlB,CAAwB,iBAAxB,CAAN;AACAJ,OAAKK,SAASR,IAAI,CAAJ,CAAT,EAAiB,EAAjB,IAAuB,CAACA,IAAI,CAAJ,IAAS,EAAV,EAAcS,MAA1C;;AAEA,MAAIN,KAAKD,CAAT,EAAY;AACVA,QAAIC,EAAJ;AACD;;AAEDF,SAAOH,IAAIC,CAAX;;AAEA,MAAIG,IAAI,CAAC,GAAL,IAAYA,IAAI,EAApB,EAAwB;AACtB;AACAE,QAAIM,KAAKC,KAAL,CAAWD,KAAKE,GAAL,CAASX,IAAT,IAAiBS,KAAKE,GAAL,CAAS,EAAT,CAA5B,CAAJ;AACAP,SAAKK,KAAKG,GAAL,CAAS,EAAT,EAAaT,CAAb,CAAL;;AAEA,WAAO,CAACH,OAAOI,EAAR,EAAYS,OAAZ,CAAoBV,IAAIF,CAAxB,IAA6BG,EAApC;AACD,GAND,MAMO;AACL,WAAOU,WAAWd,KAAKa,OAAL,
|
|
1
|
+
{"version":3,"sources":["../../../src/php/math/fmod.js"],"names":["module","exports","fmod","x","y","tmp","tmp2","p","pY","l","l2","toExponential","match","parseInt","length","Math","round","log","pow","toFixed","parseFloat","abs"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,IAAT,CAAcC,CAAd,EAAiBC,CAAjB,EAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIC,YAAJ;AACA,MAAIC,aAAJ;AACA,MAAIC,IAAI,CAAR;AACA,MAAIC,KAAK,CAAT;AACA,MAAIC,IAAI,GAAR;AACA,MAAIC,KAAK,GAAT;;AAEAL,QAAMF,EAAEQ,aAAF,GAAkBC,KAAlB,CAAwB,iBAAxB,CAAN;AACAL,MAAIM,SAASR,IAAI,CAAJ,CAAT,EAAiB,EAAjB,IAAuB,CAACA,IAAI,CAAJ,IAAS,EAAV,EAAcS,MAAzC;AACAT,QAAMD,EAAEO,aAAF,GAAkBC,KAAlB,CAAwB,iBAAxB,CAAN;AACAJ,OAAKK,SAASR,IAAI,CAAJ,CAAT,EAAiB,EAAjB,IAAuB,CAACA,IAAI,CAAJ,IAAS,EAAV,EAAcS,MAA1C;;AAEA,MAAIN,KAAKD,CAAT,EAAY;AACVA,QAAIC,EAAJ;AACD;;AAEDF,SAAOH,IAAIC,CAAX;;AAEA,MAAIG,IAAI,CAAC,GAAL,IAAYA,IAAI,EAApB,EAAwB;AACtB;AACAE,QAAIM,KAAKC,KAAL,CAAWD,KAAKE,GAAL,CAASX,IAAT,IAAiBS,KAAKE,GAAL,CAAS,EAAT,CAA5B,CAAJ;AACAP,SAAKK,KAAKG,GAAL,CAAS,EAAT,EAAaT,CAAb,CAAL;;AAEA,WAAO,CAACH,OAAOI,EAAR,EAAYS,OAAZ,CAAoBV,IAAIF,CAAxB,IAA6BG,EAApC;AACD,GAND,MAMO;AACL,WAAOU,WAAWd,KAAKa,OAAL,CAAaJ,KAAKM,GAAL,CAASd,CAAT,CAAb,CAAX,CAAP;AACD;AACF,CAtCD","file":"fmod.js","sourcesContent":["module.exports = function fmod(x, y) {\n // discuss at: https://locutus.io/php/fmod/\n // original by: Onno Marsman (https://twitter.com/onnomarsman)\n // input by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: Kevin van Zonneveld (https://kvz.io)\n // bugfixed by: Irina (https://github.com/dekairi)\n // example 1: fmod(5.7, 1.3)\n // returns 1: 0.5\n // example 2: fmod(10, 1)\n // returns 2: 0\n\n let tmp\n let tmp2\n let p = 0\n let pY = 0\n let l = 0.0\n let l2 = 0.0\n\n tmp = x.toExponential().match(/^.\\.?(.*)e(.+)$/)\n p = parseInt(tmp[2], 10) - (tmp[1] + '').length\n tmp = y.toExponential().match(/^.\\.?(.*)e(.+)$/)\n pY = parseInt(tmp[2], 10) - (tmp[1] + '').length\n\n if (pY > p) {\n p = pY\n }\n\n tmp2 = x % y\n\n if (p < -100 || p > 20) {\n // toFixed will give an out of bound error so we fix it like this:\n l = Math.round(Math.log(tmp2) / Math.log(10))\n l2 = Math.pow(10, l)\n\n return (tmp2 / l2).toFixed(l - p) * l2\n } else {\n return parseFloat(tmp2.toFixed(Math.abs(p)))\n }\n}\n"]}
|
package/php/strings/bin2hex.js
CHANGED
|
@@ -10,19 +10,37 @@ module.exports = function bin2hex(s) {
|
|
|
10
10
|
// returns 1: '4b6576'
|
|
11
11
|
// example 2: bin2hex(String.fromCharCode(0x00))
|
|
12
12
|
// returns 2: '00'
|
|
13
|
+
// example 3: bin2hex("æ")
|
|
14
|
+
// returns 3: 'c3a6'
|
|
13
15
|
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
16
|
+
var encoder = new TextEncoder();
|
|
17
|
+
var bytes = encoder.encode(s);
|
|
18
|
+
var hex = '';
|
|
19
|
+
var _iteratorNormalCompletion = true;
|
|
20
|
+
var _didIteratorError = false;
|
|
21
|
+
var _iteratorError = undefined;
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
try {
|
|
24
|
+
for (var _iterator = bytes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
25
|
+
var byte = _step.value;
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
hex += byte.toString(16).padStart(2, '0');
|
|
28
|
+
}
|
|
29
|
+
} catch (err) {
|
|
30
|
+
_didIteratorError = true;
|
|
31
|
+
_iteratorError = err;
|
|
32
|
+
} finally {
|
|
33
|
+
try {
|
|
34
|
+
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
35
|
+
_iterator.return();
|
|
36
|
+
}
|
|
37
|
+
} finally {
|
|
38
|
+
if (_didIteratorError) {
|
|
39
|
+
throw _iteratorError;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
24
42
|
}
|
|
25
43
|
|
|
26
|
-
return
|
|
44
|
+
return hex;
|
|
27
45
|
};
|
|
28
46
|
//# sourceMappingURL=bin2hex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/strings/bin2hex.js"],"names":["module","exports","bin2hex","s","
|
|
1
|
+
{"version":3,"sources":["../../../src/php/strings/bin2hex.js"],"names":["module","exports","bin2hex","s","encoder","TextEncoder","bytes","encode","hex","byte","toString","padStart"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,OAAT,CAAiBC,CAAjB,EAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,UAAU,IAAIC,WAAJ,EAAhB;AACA,MAAMC,QAAQF,QAAQG,MAAR,CAAeJ,CAAf,CAAd;AACA,MAAIK,MAAM,EAAV;AAfmC;AAAA;AAAA;;AAAA;AAgBnC,yBAAmBF,KAAnB,8HAA0B;AAAA,UAAfG,IAAe;;AACxBD,aAAOC,KAAKC,QAAL,CAAc,EAAd,EAAkBC,QAAlB,CAA2B,CAA3B,EAA8B,GAA9B,CAAP;AACD;AAlBkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAmBnC,SAAOH,GAAP;AACD,CApBD","file":"bin2hex.js","sourcesContent":["module.exports = function bin2hex(s) {\n // discuss at: https://locutus.io/php/bin2hex/\n // original by: Kevin van Zonneveld (https://kvz.io)\n // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n // bugfixed by: Linuxworld\n // improved by: ntoniazzi (https://locutus.io/php/bin2hex:361#comment_177616)\n // example 1: bin2hex('Kev')\n // returns 1: '4b6576'\n // example 2: bin2hex(String.fromCharCode(0x00))\n // returns 2: '00'\n // example 3: bin2hex(\"æ\")\n // returns 3: 'c3a6'\n\n const encoder = new TextEncoder()\n const bytes = encoder.encode(s)\n let hex = ''\n for (const byte of bytes) {\n hex += byte.toString(16).padStart(2, '0')\n }\n return hex\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var expect = require('chai').expect;
|
|
4
|
+
var serialize = require('./serialize.js');
|
|
5
|
+
|
|
6
|
+
describe('src/php/var/serialize.js', function () {
|
|
7
|
+
it('should pass example 1', function (done) {
|
|
8
|
+
var expected = 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}';
|
|
9
|
+
var result = serialize(['Kevin', 'van', 'Zonneveld']);
|
|
10
|
+
expect(result).to.deep.equal(expected);
|
|
11
|
+
done();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=serialize.mocha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/serialize.mocha.js"],"names":["expect","require","serialize","describe","it","done","expected","result","to","deep","equal"],"mappings":";;AAAA,IAAMA,SAASC,QAAQ,MAAR,EAAgBD,MAA/B;AACA,IAAME,YAAYD,QAAQ,gBAAR,CAAlB;;AAEAE,SAAS,0BAAT,EAAqC,YAAY;AAC/CC,KAAG,uBAAH,EAA4B,UAAUC,IAAV,EAAgB;AAC1C,QAAMC,WAAW,0DAAjB;AACA,QAAMC,SAASL,UAAU,CAAC,OAAD,EAAU,KAAV,EAAiB,WAAjB,CAAV,CAAf;AACAF,WAAOO,MAAP,EAAeC,EAAf,CAAkBC,IAAlB,CAAuBC,KAAvB,CAA6BJ,QAA7B;AACAD;AACD,GALD;AAMD,CAPD","file":"serialize.mocha.js","sourcesContent":["const expect = require('chai').expect\nconst serialize = require('./serialize.js')\n\ndescribe('src/php/var/serialize.js', function () {\n it('should pass example 1', function (done) {\n const expected = 'a:3:{i:0;s:5:\"Kevin\";i:1;s:3:\"van\";i:2;s:9:\"Zonneveld\";}'\n const result = serialize(['Kevin', 'van', 'Zonneveld'])\n expect(result).to.deep.equal(expected)\n done()\n })\n})\n"]}
|
package/php/var/var_dump.js
CHANGED
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
4
4
|
|
|
5
|
+
var visitedObjects = new Map(); // Initialize a map to track visited objects
|
|
6
|
+
|
|
5
7
|
module.exports = function var_dump() {
|
|
6
8
|
// discuss at: https://locutus.io/php/var_dump/
|
|
7
9
|
// original by: Brett Zamir (https://brett-zamir.me)
|
|
8
10
|
// improved by: Zahlii
|
|
9
11
|
// improved by: Brett Zamir (https://brett-zamir.me)
|
|
10
12
|
// note 1: For returning a string, use var_export() with the second argument set to true
|
|
11
|
-
// test: skip-all
|
|
12
13
|
// example 1: var_dump(1)
|
|
13
14
|
// returns 1: 'int(1)'
|
|
15
|
+
// example 2: const simpleCircular = {}
|
|
16
|
+
// example 2: simpleCircular.self = simpleCircular
|
|
17
|
+
// example 2: var_dump(simpleCircular)
|
|
18
|
+
// returns 2: 'array(1) {\n [self] =>\n Circular Reference Detected\n}\n'
|
|
14
19
|
|
|
15
20
|
var echo = require('../strings/echo');
|
|
16
21
|
var output = '';
|
|
@@ -111,7 +116,7 @@ module.exports = function var_dump() {
|
|
|
111
116
|
return ret;
|
|
112
117
|
};
|
|
113
118
|
|
|
114
|
-
var _formatArray = function _formatArray(obj, curDepth, padVal, padChar) {
|
|
119
|
+
var _formatArray = function _formatArray(obj, curDepth, padVal, padChar, visitedObjects) {
|
|
115
120
|
if (curDepth > 0) {
|
|
116
121
|
curDepth++;
|
|
117
122
|
}
|
|
@@ -122,6 +127,14 @@ module.exports = function var_dump() {
|
|
|
122
127
|
var val = '';
|
|
123
128
|
|
|
124
129
|
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
|
|
130
|
+
if (visitedObjects.has(obj)) {
|
|
131
|
+
// Circular reference detected, return a placeholder or a message
|
|
132
|
+
return 'Circular Reference Detected\n';
|
|
133
|
+
} else {
|
|
134
|
+
// Mark this object as visited by adding it to the map
|
|
135
|
+
visitedObjects.set(obj, true);
|
|
136
|
+
}
|
|
137
|
+
|
|
125
138
|
if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {
|
|
126
139
|
return obj.var_dump();
|
|
127
140
|
}
|
|
@@ -140,7 +153,7 @@ module.exports = function var_dump() {
|
|
|
140
153
|
str += key;
|
|
141
154
|
str += '] =>\n';
|
|
142
155
|
str += thickPad;
|
|
143
|
-
str += _formatArray(objVal, curDepth + 1, padVal, padChar);
|
|
156
|
+
str += _formatArray(objVal, curDepth + 1, padVal, padChar, visitedObjects);
|
|
144
157
|
} else {
|
|
145
158
|
val = _getInnerVal(objVal, thickPad);
|
|
146
159
|
str += thickPad;
|
|
@@ -159,9 +172,9 @@ module.exports = function var_dump() {
|
|
|
159
172
|
return str;
|
|
160
173
|
};
|
|
161
174
|
|
|
162
|
-
output = _formatArray(arguments[0], 0, padVal, padChar);
|
|
175
|
+
output = _formatArray(arguments[0], 0, padVal, padChar, visitedObjects);
|
|
163
176
|
for (i = 1; i < arguments.length; i++) {
|
|
164
|
-
output += '\n' + _formatArray(arguments[i], 0, padVal, padChar);
|
|
177
|
+
output += '\n' + _formatArray(arguments[i], 0, padVal, padChar, visitedObjects);
|
|
165
178
|
}
|
|
166
179
|
|
|
167
180
|
echo(output);
|
package/php/var/var_dump.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":"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","file":"var_dump.js","sourcesContent":["module.exports = function var_dump() {\n // discuss at: https://locutus.io/php/var_dump/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Zahlii\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: For returning a string, use var_export() with the second argument set to true\n // test: skip-all\n // example 1: var_dump(1)\n // returns 1: 'int(1)'\n\n const echo = require('../strings/echo')\n let output = ''\n const padChar = ' '\n const padVal = 4\n let lgth = 0\n let i = 0\n\n const _getFuncName = function (fn) {\n const name = /\\W*function\\s+([\\w$]+)\\s*\\(/.exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _repeatChar = function (len, padChar) {\n let str = ''\n for (let i = 0; i < len; i++) {\n str += padChar\n }\n return str\n }\n const _getInnerVal = function (val, thickPad) {\n let ret = ''\n if (val === null) {\n ret = 'NULL'\n } else if (typeof val === 'boolean') {\n ret = 'bool(' + val + ')'\n } else if (typeof val === 'string') {\n ret = 'string(' + val.length + ') \"' + val + '\"'\n } else if (typeof val === 'number') {\n if (parseFloat(val) === parseInt(val, 10)) {\n ret = 'int(' + val + ')'\n } else {\n ret = 'float(' + val + ')'\n }\n } else if (typeof val === 'undefined') {\n // The remaining are not PHP behavior because these values\n // only exist in this exact form in JavaScript\n ret = 'undefined'\n } else if (typeof val === 'function') {\n const funcLines = val.toString().split('\\n')\n ret = ''\n for (let i = 0, fll = funcLines.length; i < fll; i++) {\n ret += (i !== 0 ? '\\n' + thickPad : '') + funcLines[i]\n }\n } else if (val instanceof Date) {\n ret = 'Date(' + val + ')'\n } else if (val instanceof RegExp) {\n ret = 'RegExp(' + val + ')'\n } else if (val.nodeName) {\n // Different than PHP's DOMElement\n switch (val.nodeType) {\n case 1:\n if (typeof val.namespaceURI === 'undefined' || val.namespaceURI === 'https://www.w3.org/1999/xhtml') {\n // Undefined namespace could be plain XML, but namespaceURI not widely supported\n ret = 'HTMLElement(\"' + val.nodeName + '\")'\n } else {\n ret = 'XML Element(\"' + val.nodeName + '\")'\n }\n break\n case 2:\n ret = 'ATTRIBUTE_NODE(' + val.nodeName + ')'\n break\n case 3:\n ret = 'TEXT_NODE(' + val.nodeValue + ')'\n break\n case 4:\n ret = 'CDATA_SECTION_NODE(' + val.nodeValue + ')'\n break\n case 5:\n ret = 'ENTITY_REFERENCE_NODE'\n break\n case 6:\n ret = 'ENTITY_NODE'\n break\n case 7:\n ret = 'PROCESSING_INSTRUCTION_NODE(' + val.nodeName + ':' + val.nodeValue + ')'\n break\n case 8:\n ret = 'COMMENT_NODE(' + val.nodeValue + ')'\n break\n case 9:\n ret = 'DOCUMENT_NODE'\n break\n case 10:\n ret = 'DOCUMENT_TYPE_NODE'\n break\n case 11:\n ret = 'DOCUMENT_FRAGMENT_NODE'\n break\n case 12:\n ret = 'NOTATION_NODE'\n break\n }\n }\n return ret\n }\n\n const _formatArray = function (obj, curDepth, padVal, padChar) {\n if (curDepth > 0) {\n curDepth++\n }\n\n const basePad = _repeatChar(padVal * (curDepth - 1), padChar)\n const thickPad = _repeatChar(padVal * (curDepth + 1), padChar)\n let str = ''\n let val = ''\n\n if (typeof obj === 'object' && obj !== null) {\n if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {\n return obj.var_dump()\n }\n lgth = 0\n for (const someProp in obj) {\n if (obj.hasOwnProperty(someProp)) {\n lgth++\n }\n }\n str += 'array(' + lgth + ') {\\n'\n for (const key in obj) {\n const objVal = obj[key]\n if (\n typeof objVal === 'object' &&\n objVal !== null &&\n !(objVal instanceof Date) &&\n !(objVal instanceof RegExp) &&\n !objVal.nodeName\n ) {\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += _formatArray(objVal, curDepth + 1, padVal, padChar)\n } else {\n val = _getInnerVal(objVal, thickPad)\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += val\n str += '\\n'\n }\n }\n str += basePad + '}\\n'\n } else {\n str = _getInnerVal(obj, thickPad)\n }\n return str\n }\n\n output = _formatArray(arguments[0], 0, padVal, padChar)\n for (i = 1; i < arguments.length; i++) {\n output += '\\n' + _formatArray(arguments[i], 0, padVal, padChar)\n }\n\n echo(output)\n\n // Not how PHP does it, but helps us test:\n return output\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["visitedObjects","Map","module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","has","set","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":"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","file":"var_dump.js","sourcesContent":["const visitedObjects = new Map() // Initialize a map to track visited objects\n\nmodule.exports = function var_dump() {\n // discuss at: https://locutus.io/php/var_dump/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Zahlii\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: For returning a string, use var_export() with the second argument set to true\n // example 1: var_dump(1)\n // returns 1: 'int(1)'\n // example 2: const simpleCircular = {}\n // example 2: simpleCircular.self = simpleCircular\n // example 2: var_dump(simpleCircular)\n // returns 2: 'array(1) {\\n [self] =>\\n Circular Reference Detected\\n}\\n'\n\n const echo = require('../strings/echo')\n let output = ''\n const padChar = ' '\n const padVal = 4\n let lgth = 0\n let i = 0\n\n const _getFuncName = function (fn) {\n const name = /\\W*function\\s+([\\w$]+)\\s*\\(/.exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _repeatChar = function (len, padChar) {\n let str = ''\n for (let i = 0; i < len; i++) {\n str += padChar\n }\n return str\n }\n const _getInnerVal = function (val, thickPad) {\n let ret = ''\n if (val === null) {\n ret = 'NULL'\n } else if (typeof val === 'boolean') {\n ret = 'bool(' + val + ')'\n } else if (typeof val === 'string') {\n ret = 'string(' + val.length + ') \"' + val + '\"'\n } else if (typeof val === 'number') {\n if (parseFloat(val) === parseInt(val, 10)) {\n ret = 'int(' + val + ')'\n } else {\n ret = 'float(' + val + ')'\n }\n } else if (typeof val === 'undefined') {\n // The remaining are not PHP behavior because these values\n // only exist in this exact form in JavaScript\n ret = 'undefined'\n } else if (typeof val === 'function') {\n const funcLines = val.toString().split('\\n')\n ret = ''\n for (let i = 0, fll = funcLines.length; i < fll; i++) {\n ret += (i !== 0 ? '\\n' + thickPad : '') + funcLines[i]\n }\n } else if (val instanceof Date) {\n ret = 'Date(' + val + ')'\n } else if (val instanceof RegExp) {\n ret = 'RegExp(' + val + ')'\n } else if (val.nodeName) {\n // Different than PHP's DOMElement\n switch (val.nodeType) {\n case 1:\n if (typeof val.namespaceURI === 'undefined' || val.namespaceURI === 'https://www.w3.org/1999/xhtml') {\n // Undefined namespace could be plain XML, but namespaceURI not widely supported\n ret = 'HTMLElement(\"' + val.nodeName + '\")'\n } else {\n ret = 'XML Element(\"' + val.nodeName + '\")'\n }\n break\n case 2:\n ret = 'ATTRIBUTE_NODE(' + val.nodeName + ')'\n break\n case 3:\n ret = 'TEXT_NODE(' + val.nodeValue + ')'\n break\n case 4:\n ret = 'CDATA_SECTION_NODE(' + val.nodeValue + ')'\n break\n case 5:\n ret = 'ENTITY_REFERENCE_NODE'\n break\n case 6:\n ret = 'ENTITY_NODE'\n break\n case 7:\n ret = 'PROCESSING_INSTRUCTION_NODE(' + val.nodeName + ':' + val.nodeValue + ')'\n break\n case 8:\n ret = 'COMMENT_NODE(' + val.nodeValue + ')'\n break\n case 9:\n ret = 'DOCUMENT_NODE'\n break\n case 10:\n ret = 'DOCUMENT_TYPE_NODE'\n break\n case 11:\n ret = 'DOCUMENT_FRAGMENT_NODE'\n break\n case 12:\n ret = 'NOTATION_NODE'\n break\n }\n }\n return ret\n }\n\n const _formatArray = function (obj, curDepth, padVal, padChar, visitedObjects) {\n if (curDepth > 0) {\n curDepth++\n }\n\n const basePad = _repeatChar(padVal * (curDepth - 1), padChar)\n const thickPad = _repeatChar(padVal * (curDepth + 1), padChar)\n let str = ''\n let val = ''\n\n if (typeof obj === 'object' && obj !== null) {\n if (visitedObjects.has(obj)) {\n // Circular reference detected, return a placeholder or a message\n return 'Circular Reference Detected\\n'\n } else {\n // Mark this object as visited by adding it to the map\n visitedObjects.set(obj, true)\n }\n\n if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {\n return obj.var_dump()\n }\n lgth = 0\n for (const someProp in obj) {\n if (obj.hasOwnProperty(someProp)) {\n lgth++\n }\n }\n str += 'array(' + lgth + ') {\\n'\n for (const key in obj) {\n const objVal = obj[key]\n if (\n typeof objVal === 'object' &&\n objVal !== null &&\n !(objVal instanceof Date) &&\n !(objVal instanceof RegExp) &&\n !objVal.nodeName\n ) {\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += _formatArray(objVal, curDepth + 1, padVal, padChar, visitedObjects)\n } else {\n val = _getInnerVal(objVal, thickPad)\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += val\n str += '\\n'\n }\n }\n str += basePad + '}\\n'\n } else {\n str = _getInnerVal(obj, thickPad)\n }\n return str\n }\n\n output = _formatArray(arguments[0], 0, padVal, padChar, visitedObjects)\n for (i = 1; i < arguments.length; i++) {\n output += '\\n' + _formatArray(arguments[i], 0, padVal, padChar, visitedObjects)\n }\n\n echo(output)\n\n // Not how PHP does it, but helps us test:\n return output\n}\n"]}
|