Skip to content

Latest commit

Β 

History

History
555 lines (551 loc) Β· 36.8 KB

SPEC.md

File metadata and controls

555 lines (551 loc) Β· 36.8 KB

Specification

Export Path

Export Tree

  • Browser
    • Data
      • Blob
        • Blob, parseBlobAsArrayBuffer, parseBlobAsDataURL, parseBlobAsText
      • BlobPacket
        • packBlobPacket, parseBlobPacket
    • Input
      • KeyCommand
        • createKeyCommandHub
      • PointerEvent
        • ENHANCED_POINTER_EVENT_TYPE, POINTER_EVENT_TYPE, applyEnhancedPointerEventListener, applyPointerEventListener
    • Module
      • HistoryStateStore
        • createHistoryStateStore
      • StateStorage
        • createSyncStateStorage
    • DOM
      • applyReceiveFileListListener, getElementAtViewport, getPathElementList, throttleByAnimationFrame
    • Net
      • fetchLikeRequest
    • Resource
      • createDownload, createDownloadWithBlob, createDownloadWithObject, createDownloadWithString, deleteArrayBufferCache, loadArrayBufferCache, loadImage, loadScript, loadText, saveArrayBufferCache
  • Common
    • Data
      • ArrayBuffer
        • concatArrayBuffer, deconcatArrayBuffer, fromString, isEqualArrayBuffer, toString
      • ArrayBufferPacket
        • HEADER_BYTE_SIZE, MAX_PACKET_HEADER_SIZE, packArrayBufferHeader, packArrayBufferPacket, packChainArrayBufferPacket, parseArrayBufferHeader, parseArrayBufferPacket, parseChainArrayBufferPacket
      • Base64
        • decode, encode
      • CacheMap
        • createCache, createCacheMap
      • DataUri
        • decode, encode
      • LinkedList
        • createDoublyLinkedList, createNode
      • ListMap
        • createListMap
      • SaveQueue
        • createSaveQueue
      • SetMap
        • createSetMap, getInvertSetMap
      • Toggle
        • createToggle
      • Tree
        • createTreeBottomUpSearch, createTreeBottomUpSearchAsync, createTreeBreadthFirstSearch, createTreeBreadthFirstSearchAsync, createTreeDepthFirstSearch, createTreeDepthFirstSearchAsync, prettyStringifyTree
      • getValueByKeyList, hashStringToNumber, reverseString, swapObfuscateString, tryParseJSONObject
    • Geometry
      • D2
        • BoundingRect
          • fromEmpty, fromPoint, fromWidget, fromWidgetList, getCenter, getUnion, isContainPoint, isIntersect
        • Line
          • fromWidget
        • Rect
          • fromBoundingRect, fromEmpty, fromPoint, getCenter, getSize, getUnion, getUnionOfList, isContain, isContainPoint, isEmpty, isIntersect
        • Vector
          • abs, add, clamp, divide, fromAngleLength, fromOrigin, getAngle, getDist, getDistSq, getDotProduct, getLength, getLengthSq, getRotate, getRotateDelta, isZero, lerp, max, min, multiply, project, round, scale, sub
        • Widget
          • fromBoundingRect, fromLine, fromPoint, getBoundingBottom, getBoundingHeight, getBoundingLeft, getBoundingRight, getBoundingSize, getBoundingTop, getBoundingWidth, isContainBoundingRect, isInterceptBoundingRect, localBoundingRect, localPoint, round
      • Angle
        • DEGREE_TO_RADIAN, RADIAN_TO_DEGREE, fromDegree, getDegree
    • Immutable
      • Array
        • arrayConcat, arrayDelete, arrayFindDelete, arrayFindMove, arrayFindOrPush, arrayFindSet, arrayFindSetOrPush, arrayInsert, arrayMatchDelete, arrayMatchMove, arrayMatchPush, arrayMove, arrayPop, arrayPush, arraySet, arrayShift, arraySplitChunk, arrayUnshift
      • Object
        • objectDelete, objectFilter, objectFindKey, objectFromEntries, objectMap, objectMerge, objectPickKey, objectSet
      • StateStore
        • createEntryEnhancer, createStateStore, createStateStoreEnhanced, createStateStoreLite, createStoreStateSyncReducer, reducerFromMap, toReduxStore
      • isArrayShallowEqual, isCompactArrayShallowEqual, isObjectShallowEqual, transformCache
    • Math
      • addAbs, clamp, euclideanModulo, lerp, roundFloat, smoothstep, easeInCirc, easeInCubic, easeInExpo, easeInOutCirc, easeInOutCubic, easeInOutExpo, easeInOutQuad, easeInOutQuart, easeInOutQuint, easeInOutSine, easeInQuad, easeInQuart, easeInQuint, easeInSine, easeOutCirc, easeOutCubic, easeOutExpo, easeOutQuad, easeOutQuart, easeOutQuint, easeOutSine, linear, getRandomArrayBuffer, getRandomId, getRandomInt, getRandomIntList, getSample, getSampleRange, getSampleRate
    • Module
      • AsyncFuncQueue
        • createAsyncFuncQueue
      • AsyncLane
        • createAsyncLane, extendAutoSelectLane, extendLaneValueList, extendLaneValueMap, selectMinLoadLane
      • AsyncTask
        • ASYNC_TASK_KEY_MAP, ASYNC_TASK_PHASE_MAP, getAsyncTaskPhase, resetAsyncTask, runAsyncTask
      • AsyncTaskQueue
        • ASYNC_TASK_QUEUE_KEY_MAP, createAsyncTaskQueue, createFilterStaleAsyncTask
      • BlockChart
        • getBlockBar, getBlockChart
      • Event
        • createEventEmitter, createEventTarget, createHub
      • KeySelector
        • concatKeyFrag, createMultiKeySwitch, reduceKeySelector
      • KeyTree
        • createKeyTree, createKeyTreeEnhanced
      • LevenshteinDistance
        • getLevenshteinDistance
      • MIME
        • BASIC_EXTENSION_MAP, DEFAULT_MIME, getMIMETypeFromFileName
      • Patch
        • createPatchKit, toArrayWithKeyPatchKit, toObjectPatchKit
      • RouteMap
        • appendRouteMap, createRouteMap, findRouteFromMap, getRouteParam, getRouteParamAny, parseRouteToMap, parseRouteUrl
      • SemVer
        • compareSemVer, parseSemVer
      • TimedLookup
        • generateCheckCode, generateLookupData, packCheckCode, packDataArrayBuffer, parseCheckCode, parseDataArrayBuffer, verifyCheckCode, verifyOption, verifyParsedCheckCode
      • UpdateLoop
        • createUpdateLoop, createUpdater
    • Mutable
      • Object
        • objectMergeDeep, objectSortKey
    • Check
      • isArrayLength, isBasicArray, isBasicFunction, isBasicObject, isBoolean, isFunctionThrow, isFunctionThrowAsync, isInteger, isNumber, isObjectAlike, isObjectContain, isObjectKey, isOneOf, isPromiseAlike, isRegExp, isStrictEqual, isString, isStringifyEqual
    • Compare
      • compareString, compareStringLocale, compareStringWithNumber
    • Error
      • catchAsync, catchPromise, catchSync, rethrowError, tryCall
    • Format
      • binary, decimal, describe, mediaTime, padTable, percent, prettyStringifyJSON, time, typeNameOf
    • Function
      • createInsideOutPromise, debounce, lossyAsync, throttle, withDelayArgvQueue, withRepeat, withRepeatAsync, withRetry, withRetryAsync, withTimeoutAsync, withTimeoutPromise
    • String
      • autoEllipsis, createMarkReplacer, escapeHTML, escapeRegExp, indentLine, indentList, joinCamelCase, joinKebabCase, joinSnakeCase, removeInvalidCharXML, splitCamelCase, splitKebabCase, splitSnakeCase, unescapeHTML
    • Time
      • CLOCK_PER_SECOND, CLOCK_TO_SECOND, cancelFrameUpdate, clock, createStepper, createTimer, getTimestamp, requestFrameUpdate, setTimeoutAsync
    • Verify
      • arrayLength, basicArray, basicFunction, basicObject, boolean, doNotThrow, doNotThrowAsync, doThrow, doThrowAsync, integer, notStrictEqual, notStringifyEqual, number, objectAlike, objectContain, objectKey, oneOf, promiseAlike, regexp, strictEqual, string, stringifyEqual
  • Env
    • assert, getEndianness, getEnvironment, getGlobal, global, tryRequire, tryRequireResolve
  • Node
    • Data
      • Buffer
        • toArrayBuffer
      • BufferPacket
        • packBufferPacket, parseBufferPacket
      • LogQueue
        • createLogQueue
      • Stream
        • bufferToReadableStream, readableStreamToBufferAsync, readlineOfStreamAsync, setupStreamPipe, waitStreamStopAsync, writeBufferToStreamAsync
      • getRandomBufferAsync
    • File
      • Directory
        • copyDirectory, copyDirectoryInfoTree, createDirectory, deleteDirectory, deleteDirectoryInfoTree, getDirectoryInfoTree, getDirectorySubInfoList, getFileList, renameDirectoryInfoTree, walkDirectoryInfoTree, walkDirectoryInfoTreeBottomUp
      • Modify
        • modifyCopy, modifyDelete, modifyDeleteForce, modifyRename
      • Path
        • PATH_TYPE, STAT_ERROR, copyPath, createPathPrefixLock, deletePath, getPathStat, getPathTypeFromStat, nearestExistPath, renamePath, toPosixPath
      • Watch
        • createFileWatcher
      • appendFileAsync, closeAsync, copyFileAsync, createReadStream, createWriteStream, executableAsync, mkdirAsync, openAsync, readAsync, readFileAsync, readableAsync, readdirAsync, readlinkAsync, renameAsync, rmdirAsync, statAsync, symlinkAsync, truncateAsync, unlinkAsync, visibleAsync, writableAsync, writeAsync, writeFileAsync
    • Module
      • Option
        • createOptionParser, Preset, createOptionGetter, getOptionalFormatFlag, getOptionalFormatValue, parseOptionMap, prepareOption
      • EntityTag
        • getEntityTagByContentHash, getEntityTagByContentHashAsync, getWeakEntityTagByStat
      • Logger
        • createLogger, createSimpleLogger
      • SafeWrite
        • createSafeWriteStream
    • Server
      • Responder
        • Common
          • createResponderHostMapper, createResponderLog, createResponderLogEnd, createResponderSetHeaderHSTS, responderEnd, responderEndWithRedirect, responderEndWithStatusCode, responderSetHeaderCacheControlImmutable
        • RateLimit
          • createResponderCheckRateLimit, createResponderRateLimit
        • Router
          • METHOD_MAP, appendRouteMap, createResponderRouteListHTML, createResponderRouter, createRouteMap, describeRouteMap, getRouteParam, getRouteParamAny
        • Send
          • createResponderFavicon, prepareBufferData, prepareBufferDataAsync, responderSendBuffer, responderSendBufferCompress, responderSendBufferRange, responderSendJSON, responderSendStream, responderSendStreamCompress, responderSendStreamRange
        • ServeStatic
          • createDefaultCacheMap, createResponderBufferCache, createResponderServeStatic
      • WebSocket
        • WebSocket
          • createWebSocket
        • WebSocketClient
          • createWebSocketClient
        • WebSocketServer
          • enableWebSocketServer
        • WebSocketUpgradeRequest
          • createUpdateRequestListener
        • createFrameReceiverStore, listenAndReceiveFrame, createFrameSenderStore, encodeCloseFrame, encodeFrame, encodePingFrame, encodePongFrame, sendEncodedFrame, BUFFER_MAX_LENGTH, FRAME_CONFIG, OPCODE_TYPE, WEBSOCKET_EVENT, WEBSOCKET_VERSION, applyMaskQuadletBufferInPlace, getRequestKey, getRespondKey
      • Proxy
        • createTCPProxyListener
      • Server
        • createRequestListener, createServerPack, describeServerPack
      • CommonHTML
        • COMMON_FUNC_MAP, COMMON_LAYOUT, COMMON_SCRIPT, COMMON_STYLE
      • Function
        • autoTestServerPort, getUnusedPort, parseCookieString
    • System
      • DefaultOpen
        • getDefaultOpenCommandList
      • ExitListener
        • addExitListenerAsync, addExitListenerSync, clearExitListener, deleteExitListenerAsync, deleteExitListenerSync
      • Process
        • describeAllProcessStatusAsync, findProcessPidMapInfo, findProcessTreeInfo, getAllProcessStatusAsync, getProcessListAsync, isPidExist, killProcessInfoAsync, killProcessTreeInfoAsync, sortProcessList, toProcessPidMap, toProcessTree
      • ResolveCommand
        • resolveCommand, resolveCommandAsync, resolveCommandName, resolveCommandNameAsync
      • Run
        • run, runSync, withCwd
      • Status
        • describeSystemActivity, describeSystemMemory, describeSystemNetwork, describeSystemPlatform, describeSystemProcessor, describeSystemStatus, getSystemActivity, getSystemMemory, getSystemNetwork, getSystemPlatform, getSystemProcessor, getSystemStatus
    • Net
      • fetchLikeRequest, fetchWithJump, ping, requestHttp
    • Resource
      • DR_BROWSER_FILE_PATH, DR_BROWSER_SCRIPT_TAG, loadJSON, loadLocalJSON, loadLocalScript, loadRemoteJSON, loadRemoteScript, loadScript

Bin Option Format

πŸ“„ source-bin/option.js

CLI Usage:
  --config --c -c [OPTIONAL] [ARGUMENT=1]
      from ENV: set to "env" to enable, not using be default
      from JS/JSON file: set to "path/to/file.config.js|json"
  --help --h -h [OPTIONAL] [ARGUMENT=0+]
      show full help
  --quiet --q -q [OPTIONAL] [ARGUMENT=0+]
      less log
  --version --v -v [OPTIONAL] [ARGUMENT=0+]
      show version
  --json --J -J [OPTIONAL] [ARGUMENT=0+]
      output JSON, if supported
  --host --H -H [OPTIONAL] [ARGUMENT=1]
      common option: $0=hostname:port (hostname default to 0.0.0.0)
  --root --R -R [OPTIONAL] [ARGUMENT=1]
      common option: $0=path/cwd
  --input-file --I -I [OPTIONAL] [ARGUMENT=1]
      common option
  --output-file --O -O [OPTIONAL] [ARGUMENT=1]
      common option
  --eval --e -e [OPTIONAL] [ARGUMENT=0+]
      eval file or string: -O=outputFile, -I/$0=scriptFile/scriptString, $@=...evalArgv
  --repl --i -i [OPTIONAL] [ARGUMENT=0+]
      start node REPL
  --wait [OPTIONAL] [ARGUMENT=0-1]
      wait specified time, in msec: $0=waitTime/2*1000
  --echo [OPTIONAL] [ARGUMENT=0+]
      show args: $@=...args
  --cat [OPTIONAL] [ARGUMENT=0+]
      with 0 args pipe stdin to stdout, else read $@ as file and pipe to stdout
  --write [OPTIONAL] [ARGUMENT=1]
      for use like ">": `dr-js --cat sourceFile | dr-js --write outputFile`
  --append [OPTIONAL] [ARGUMENT=1]
      for use like ">>": `dr-js --cat sourceFile | dr-js --append outputFile`
  --merge [OPTIONAL] [ARGUMENT=2+]
      merge to one file: $@=mergedFile,...inputFileList
  --create-directory --mkdir [OPTIONAL] [ARGUMENT=0+]
      create directory: $@=...pathList
  --modify-copy --cp [OPTIONAL] [ARGUMENT=2]
      copy path: $@=pathFrom,pathTo
  --modify-rename --mv [OPTIONAL] [ARGUMENT=2]
      rename path: $@=pathFrom,pathTo
  --modify-delete --rm [OPTIONAL] [ARGUMENT=0+]
      delete path: $@=...pathList
  --status --s -s [OPTIONAL] [ARGUMENT=0+]
      basic system status: -J=isOutputJSON
  --open --o -o [OPTIONAL] [ARGUMENT=0-1]
      use system default app to open uri or path: $0=uriOrPath/cwd
  --which --w -w [OPTIONAL] [ARGUMENT=1]
      resolve to full executable path: -R=resolveRoot/cwd, $0=commandNameOrPath
  --fetch --f -f [OPTIONAL] [ARGUMENT=1-3]
      fetch "GET" uri: -O=outputFile/stdout, $@=initialUrl,jumpMax/4,timeout/0
  --process-status --ps [OPTIONAL] [ARGUMENT=0-1]
      show system process status: -J=isOutputJSON, $0=outputMode/"pid--"
  --json-format --jf [OPTIONAL] [ARGUMENT=0-1]
      re-format JSON file: -O=outputFile/-I, -I=inputFile, $0=unfoldLevel/2
  --server-serve-static --sss [OPTIONAL] [ARGUMENT=0-1]
      static file server: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*1000
  --server-serve-static-simple --ssss [OPTIONAL] [ARGUMENT=0-1]
      static file server, no HTML: -H=hostname:port, -R=staticRoot/cwd, $0=expireTime/5*1000
  --server-websocket-group --swg [OPTIONAL]
      websocket chat server: -H=hostname:port
  --server-test-connection --stc [OPTIONAL]
      connection test server: -H=hostname:port
  --server-tcp-proxy --stp [OPTIONAL] [ARGUMENT=1+]
      tcp proxy server: -H=hostname:port, $@=toHostname:toPort,toHostname:toPort,...
ENV Usage:
  "
    #!/usr/bin/env bash
    export DR_JS_CONFIG="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_HELP="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_QUIET="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_VERSION="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_JSON="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_HOST="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_ROOT="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_INPUT_FILE="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_OUTPUT_FILE="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_EVAL="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_REPL="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_WAIT="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_ECHO="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_CAT="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_WRITE="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_APPEND="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_MERGE="[OPTIONAL] [ARGUMENT=2+]"
    export DR_JS_CREATE_DIRECTORY="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_MODIFY_COPY="[OPTIONAL] [ARGUMENT=2]"
    export DR_JS_MODIFY_RENAME="[OPTIONAL] [ARGUMENT=2]"
    export DR_JS_MODIFY_DELETE="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_STATUS="[OPTIONAL] [ARGUMENT=0+]"
    export DR_JS_OPEN="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_WHICH="[OPTIONAL] [ARGUMENT=1]"
    export DR_JS_FETCH="[OPTIONAL] [ARGUMENT=1-3]"
    export DR_JS_PROCESS_STATUS="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_JSON_FORMAT="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_SERVER_SERVE_STATIC="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_SERVER_SERVE_STATIC_SIMPLE="[OPTIONAL] [ARGUMENT=0-1]"
    export DR_JS_SERVER_WEBSOCKET_GROUP="[OPTIONAL]"
    export DR_JS_SERVER_TEST_CONNECTION="[OPTIONAL]"
    export DR_JS_SERVER_TCP_PROXY="[OPTIONAL] [ARGUMENT=1+]"
  "
CONFIG Usage:
  {
    "config": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "help": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "quiet": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "version": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "json": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "host": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "root": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "inputFile": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "outputFile": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "eval": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "repl": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "wait": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "echo": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "cat": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "write": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "append": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "merge": [ "[OPTIONAL] [ARGUMENT=2+]" ],
    "createDirectory": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "modifyCopy": [ "[OPTIONAL] [ARGUMENT=2]" ],
    "modifyRename": [ "[OPTIONAL] [ARGUMENT=2]" ],
    "modifyDelete": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "status": [ "[OPTIONAL] [ARGUMENT=0+]" ],
    "open": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "which": [ "[OPTIONAL] [ARGUMENT=1]" ],
    "fetch": [ "[OPTIONAL] [ARGUMENT=1-3]" ],
    "processStatus": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "jsonFormat": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "serverServeStatic": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "serverServeStaticSimple": [ "[OPTIONAL] [ARGUMENT=0-1]" ],
    "serverWebsocketGroup": [ "[OPTIONAL]" ],
    "serverTestConnection": [ "[OPTIONAL]" ],
    "serverTcpProxy": [ "[OPTIONAL] [ARGUMENT=1+]" ],
  }