{"version":3,"sources":["webpack://UE/webpack/universalModuleDefinition","webpack://UE/webpack/bootstrap","webpack://UE/./src/validator.ts","webpack://UE/./src/string.ts","webpack://UE/./src/errors/argument-error.ts","webpack://UE/./src/core.ts","webpack://UE/./src/type.ts","webpack://UE/./src/asynchronous/cancellation-token.ts","webpack://UE/./src/declarations/types.ts","webpack://UE/./src/errors/root-error.ts","webpack://UE/./src/array.ts","webpack://UE/./src/errors/argument-null-or-whitespace-error.ts","webpack://UE/./src/asynchronous/cancellation-token-source.ts","webpack://UE/./src/disposables/disposify.ts","webpack://UE/./src/asynchronous/promise.ts","webpack://UE/./src/errors/operation-canceled-error.ts","webpack://UE/./src/date-time.ts","webpack://UE/./src/date-time-format.ts","webpack://UE/./src/invoker.ts","webpack://UE/./src/index.ts","webpack://UE/./src/disposables/abort-disposable.ts","webpack://UE/./src/disposables/abort-async-disposable.ts","webpack://UE/./src/errors/argument-null-or-empty-error.ts","webpack://UE/./src/errors/argument-null-or-undefined-error.ts","webpack://UE/./src/errors/argument-out-of-range-error.ts","webpack://UE/./src/disposables/cancellation-disposable.ts","webpack://UE/./src/disposables/cancellation-async-disposable.ts","webpack://UE/./src/disposables/composite-disposable.ts","webpack://UE/./src/disposables/composite-async-disposable.ts","webpack://UE/./src/date-format.ts","webpack://UE/./src/errors/invalid-operation-error.ts","webpack://UE/./src/using.ts","webpack://UE/./src/using-async.ts","webpack://UE/./src/declarations/styles.ts","webpack://UE/./src/activator.ts","webpack://UE/./src/asynchronous/async.ts","webpack://UE/./src/disposables/async-disposify.ts","webpack://UE/./src/asynchronous/blob.ts","webpack://UE/./src/error.ts","webpack://UE/./src/declarations/html-symbol.ts","webpack://UE/./src/declarations/http-method.ts","webpack://UE/./src/media.ts","webpack://UE/./src/unsafe.ts","webpack://UE/./src/uri.ts","webpack://UE/./src/window.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isNull","isNullOrEmpty","length","replace","String","empty","lf","crlf","source","Validator","isNullOrWhitespace","Core","elvis","head","replacement","parameter","Type","isObject","result","_","index","trim","message","parameterName","isInstance","ArgumentError","substitute","type","Elvis","Default","getDefault","isFunction","WithEmpty","WithWhitespace","isString","delegate","delegateText","toString","matches","exec","isNumber","bigint","boolean","func","number","string","symbol","undefined","cancellationTokenSource","canBeCanceled","_cancellationTokenSource","this","throwIfCancellationRequested","register","seal","isCancellationRequested","callback","Disposify","none","CancellationToken","DayOfWeek","DateTimePart","WindowLocation","target","setPrototypeOf","Error","indexOf","some","array","splice","ArgumentNullOrWhiteSpaceError","_callbacks","_isCancellationRequested","token","cancel","cancelAfter","reverse","Array","clear","delayInMilliseconds","Promise","delayAsync","callbacks","push","remove","dispose","executor","cancellationToken","resolve","reject","tryReject","e","timeoutId","setTimeout","parameters","clearTimeout","OperationCanceledError","Date","DateTime","clone","set","format","addYears","addMonths","addDays","addHours","addMinutes","addSeconds","addMilliseconds","addTicks","truncate","getFullYear","setFullYear","getMonth","setMonth","getDate","setDate","getHours","setHours","getMinutes","setMinutes","getSeconds","setSeconds","getMilliseconds","setMilliseconds","getTime","setTime","getDay","parse","text","year","month","day","hour","minute","second","millisecond","ticks","part","Era","Year","Month","Day","Hour","Minute","Second","_formatter","dateTime","formatDate","date","parseDate","action","onError","onFinally","AbortDisposable","AbortAsyncDisposable","ArgumentNullOrEmptyError","ArgumentNullOrUndefinedError","ArgumentOutOfRangeError","CancellationDisposable","CancellationAsyncDisposable","CancellationTokenSource","CompositeDisposable","CompositeAsyncDisposable","DateTimeFormat","InvalidOperationError","RootError","Using","UsingAsync","abortController","AbortController","_abortController","signal","aborted","abort","disposeAsync","actualValue","_isDisposed","_disposables","disposables","contains","add","item","isDisposed","addAsync","removeAsync","clearAsync","promises","disposable","all","pattern","_patterns","substring","zeroPadding","StringUtility","_parser","parseInt","match","min","sec","msec","char","charAt","formatWord","parseWord","join","formatter","apply","parser","str","test","resource","funcAsync","Visibility","visible","hidden","collapse","Display","inline","block","listItem","runIn","inlineBlock","table","inlineTable","tableRowGroup","tableHeaderGroup","tableFooterGroup","tableRow","tableColumnGroup","tableColumn","tableCell","tableCaption","inherit","ctor","parameter1","parameter2","parameter3","parameter4","parameter5","intervalInMilliseconds","intervalId","setInterval","clearInterval","readAsync","reader","read","onload","_e","onerror","error","blob","FileReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","DOMException","quot","apos","amp","lt","gt","nbsp","copy","post","put","del","options","trace","connect","handler","image","Image","size","width","height","src","dictionary","entries","getOwnPropertyNames","forEach","entry","encodeURIComponent","parts","decodeURIComponent","split","query","keyValue","toYesNo","url","feature","windowUrl","windowTarget","windowFeatures","features","Invoker","run","location","pushX","x","isNaN","pushY","y","CenterScreen","screen","point","menubar","isMenubar","toolbar","isToolbar","isLocation","status","isStatus","resizable","isResizable","scrollbars","isScrollbars","directories","isDirectories","open"],"mappings":"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","file":"ue.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"UE\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"UE\"] = factory();\n\telse\n\t\troot[\"UE\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n","/**\r\n * 検証に関連する機能を提供します。\r\n */\r\nimport { Nullable, NullOrUndefined } from \"./declarations/types\";\r\n\r\nimport * as String from \"./string\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 値が `null` (未定義) かどうかを判定します。\r\n *\r\n * @template T 値の型を指定します。\r\n * @param value 値を指定します。\r\n * @returns 値が `null` (未定義) の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function isNull(value: Nullable): value is NullOrUndefined {\r\n const result = value === void 0 || value === null;\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `null` (未定義) または空かどうかを判定します。\r\n *\r\n * @template T 要素の型を指定します。\r\n * @param value 値を指定します。\r\n * @returns 値が `null` (未定義) または空の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function isNullOrEmpty(value: Nullable>): value is NullOrUndefined {\r\n if (isNull(value) || isNull(value.length)) {\r\n return true;\r\n }\r\n try {\r\n const result = value.length <= 0;\r\n return result;\r\n }\r\n catch {\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * 値が `null` (未定義) または空白文字かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `null` (未定義) または空白文字の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function isNullOrWhitespace(value: Nullable): value is NullOrUndefined {\r\n if (isNullOrEmpty(value)) {\r\n return true;\r\n }\r\n try {\r\n const result = value.replace(/\\s/g, String.empty).length <= 0;\r\n return result;\r\n }\r\n catch {\r\n return true;\r\n }\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * 文字列に関連する機能を提供します。\r\n */\r\nimport { Nullable, ReadOnlyStringDictionary } from \"./declarations/types\";\r\n\r\nimport * as Core from \"./core\";\r\nimport * as Type from \"./type\";\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region 定数\r\n\r\n/** 空文字を表します。 */\r\nexport const empty = \"\";\r\n/** LF (ライン フィード) を表します。 */\r\nexport const lf = \"\\n\";\r\n/** CRLF (キャリッジ リターン + ライン フィード) を表します。 */\r\nexport const crlf = `\\r${lf}`;\r\n\r\n//#endregion 定数\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 文字列を書式指定した表記に置換します。\r\n *\r\n * @param source 処理対象の文字列を指定します。\r\n * @param replacement 書式指定するオブジェクトを指定します。\r\n * @returns 処理結果を返します。\r\n */\r\nexport function format(source: Nullable, ...replacement: ReadonlyArray): string {\r\n if (Validator.isNullOrWhitespace(source)) {\r\n return Core.elvis(source, empty);\r\n }\r\n const head = replacement[0];\r\n const parameter = (Type.isObject(head) ? head : replacement) as ReadOnlyStringDictionary;\r\n const result = source.replace(/\\{(.+?)\\}/g, (_, index: string) => Core.elvis(parameter[index.trim()], empty));\r\n return result;\r\n}\r\n\r\n//#endregion 関数\r\n","import * as String from \"../string\";\r\nimport * as Validator from \"../validator\";\r\n\r\nimport RootError from \"./root-error\";\r\n\r\n/**\r\n * メソッドや関数の引数のエラーを提供します。\r\n */\r\nexport default class ArgumentError extends RootError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"ArgumentError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `ArgumentError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `ArgumentError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is ArgumentError {\r\n const result = value instanceof ArgumentError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param message メッセージ文字列を指定します。\r\n * @param parameterName 引数の名称を指定します。\r\n */\r\n public constructor(message = String.empty, parameterName = String.empty) {\r\n super(`${message} ${Validator.isNullOrWhitespace(parameterName) ? String.empty : `{ Parameter Name: ${parameterName} }`}`.trim());\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","/**\r\n * 汎用的な機能を提供します。\r\n */\r\nimport { Elvis, Func, MajorType, Nullable } from \"./declarations/types\";\r\n\r\nimport * as String from \"./string\";\r\nimport * as Type from \"./type\";\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 値が `null` (未定義) または空の場合、代替値を返します。\r\n *\r\n * @template T 値の型を指定します。\r\n * @param value 値を指定します。\r\n * @param substitute 代替値または代替値を返す処理を指定します。\r\n * @param type 代替値を返す処理の種類を指定します。\r\n * @returns value が null (未定義) または空の場合は substitute の評価結果を、それ以外の場合は value を返します。\r\n */\r\nexport function elvis(value: Nullable, substitute: T | Func, type: Elvis = Elvis.Default): T {\r\n const getDefault = () => Type.isFunction(substitute)\r\n ? substitute()\r\n : substitute;\r\n if (Validator.isNull(value)) {\r\n return getDefault();\r\n }\r\n switch (type) {\r\n case Elvis.WithEmpty: {\r\n const hasLength = value.hasOwnProperty(\"length\");\r\n if (hasLength && Validator.isNullOrEmpty(value as ArrayLike)) {\r\n return getDefault();\r\n }\r\n break;\r\n }\r\n case Elvis.WithWhitespace: {\r\n if (Type.isString(value) && Validator.isNullOrWhitespace(value)) {\r\n return getDefault();\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * メンバーの名称を取得します。\r\n *\r\n * @template T 値の型を指定します。\r\n * @param delegate メンバーを返す処理を指定します。\r\n * @returns メンバーの名称を返します。\r\n * @deprecated Minify したときの動作を保証できないため、非推奨とします。\r\n */\r\nexport function nameof(delegate: Func>): string {\r\n const delegateText = delegate.toString();\r\n const matches = /(return\\s{1}|\\.)([^\\.;]+);?\\s*\\}$/.exec(delegateText);\r\n if (Validator.isNull(matches) || matches.length < 3) {\r\n return String.empty;\r\n }\r\n const result = matches[2];\r\n return result;\r\n}\r\n\r\n/**\r\n * ビット フィールドが設定されているかどうかを判定します。\r\n *\r\n * @template T 値の型を指定します。\r\n * @param source 判定対象を指定します。\r\n * @param value 判定値を指定します。\r\n * @returns ビット フィールドが設定されている場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function hasFlag(source: Nullable, value: Nullable): boolean {\r\n if (Validator.isNull(source)\r\n || Validator.isNull(value)\r\n || !Type.isNumber(source)\r\n || !Type.isNumber(value)) {\r\n return false;\r\n }\r\n return (source & value) === value;\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * 型に関連する機能を提供します。\r\n */\r\n\r\n//#region 定数\r\n\r\n/** 大きい数値を表します。 */\r\nexport const bigint = \"bigint\";\r\n/** 真偽値を表します。 */\r\n// tslint:disable-next-line: variable-name\r\nexport const boolean = \"boolean\";\r\n/** 関数オブジェクトを表します。 */\r\nexport const func = \"function\";\r\n/** 数値を表します。 */\r\n// tslint:disable-next-line: variable-name\r\nexport const number = \"number\";\r\n/** `null` または 他のオブジェクトを表します。 */\r\nexport const object = \"object\";\r\n/** 文字列を表します。 */\r\n// tslint:disable-next-line: variable-name\r\nexport const string = \"string\";\r\n/** シンボル (ES6) を表します。 */\r\nexport const symbol = \"symbol\";\r\n/** 未定義を表します。 */\r\n// tslint:disable-next-line: variable-name\r\nexport const undefined = \"undefined\";\r\n\r\n//#endregion 定数\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 値が `bigint` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `bigint` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isBigInt(value: any): value is bigint {\r\n const result = typeof value === \"bigint\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `boolean` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `boolean` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isBoolean(value: any): value is boolean {\r\n const result = typeof value === \"boolean\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `function` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `function` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any ban-types\r\nexport function isFunction(value: any): value is Function {\r\n const result = typeof value === \"function\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `number` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `number` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isNumber(value: any): value is number {\r\n const result = typeof value === \"number\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `object` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `object` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isObject(value: any): value is object {\r\n const result = typeof value === \"object\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `string` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `string` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isString(value: any): value is string {\r\n const result = typeof value === \"string\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `symbol` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `symbol` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isSymbol(value: any): value is symbol {\r\n const result = typeof value === \"symbol\";\r\n return result;\r\n}\r\n\r\n/**\r\n * 値が `undefined` 型かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 値が `undefined` 型の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line:no-any\r\nexport function isUndefined(value: any): value is undefined {\r\n const result = typeof value === \"undefined\";\r\n return result;\r\n}\r\n\r\n//#endregion 関数\r\n","import { Action, Disposable, Nullable } from \"../declarations/types\";\r\n\r\nimport * as Disposify from \"../disposables/disposify\";\r\nimport * as Validator from \"../validator\";\r\n\r\nimport CancellationTokenSource from \"./cancellation-token-source\";\r\nimport OperationCanceledError from \"../errors/operation-canceled-error\";\r\n\r\n/**\r\n * 操作を取り消す通知を配信する機能を提供します。\r\n */\r\nexport default class CancellationToken {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を取り消す通知を配信する空のオブジェクトを表します。 */\r\n public static readonly none = new CancellationToken();\r\n\r\n /** 取り消された状態にできるかどうかを表します。 */\r\n public readonly canBeCanceled: boolean = false;\r\n /** 操作を取り消すオブジェクトを表します。 */\r\n private readonly _cancellationTokenSource: Nullable = null;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * 操作の取り消しが要求されたかどうかを表す値を取得します。\r\n */\r\n public get isCancellationRequested(): boolean {\r\n if (Validator.isNull(this._cancellationTokenSource)) {\r\n return false;\r\n }\r\n return this._cancellationTokenSource.isCancellationRequested;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * 取り消しが要求された場合、`OperationCanceledError` をスローします\r\n */\r\n public throwIfCancellationRequested(): void {\r\n if (this.isCancellationRequested) {\r\n throw new OperationCanceledError(\"the operation was canceled.\");\r\n }\r\n }\r\n\r\n /**\r\n * 操作を取り消すときのコールバックを登録します。\r\n *\r\n * @param callback 操作を取り消すときのコールバックを指定します。\r\n * @returns 登録したコールバックを解除するオブジェクトを返します。\r\n */\r\n public register(callback: Action): Disposable {\r\n if (Validator.isNull(this._cancellationTokenSource)) {\r\n return Disposify.empty;\r\n }\r\n // @ts-ignore\r\n const result = this._cancellationTokenSource.register(callback);\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param cancellationTokenSource 操作を取り消すオブジェクトを指定します。\r\n */\r\n private constructor(cancellationTokenSource?: CancellationTokenSource) {\r\n this.canBeCanceled = Validator.isNull(cancellationTokenSource) === false;\r\n this._cancellationTokenSource = cancellationTokenSource;\r\n // `this` を束縛\r\n this.throwIfCancellationRequested = this.throwIfCancellationRequested.bind(this);\r\n this.register = this.register.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","/**\r\n * 汎用的な型定義を提供します。\r\n */\r\n\r\n//#region 型定義\r\n\r\n/**\r\n * `JavaScript` の主要な型を提供します。\r\n */\r\nexport type MajorType = boolean | number | object | string;\r\n\r\n/**\r\n * `null` または未定義の型を提供します。\r\n */\r\nexport type NullOrUndefined = null | undefined;\r\n\r\n/**\r\n * `null` (未定義) 許容型を提供します。\r\n *\r\n * @template T 型を指定します。\r\n */\r\nexport type Nullable = T | null | undefined;\r\n\r\n/**\r\n * 未定義許容型を提供します。\r\n *\r\n * @template T 型を指定します。\r\n */\r\nexport type Undefinable = T | undefined;\r\n\r\n/**\r\n * `Promise` を `resolve` (解決) する関数の型を提供します。\r\n */\r\nexport type PromiseResolve = Action1>>;\r\n\r\n/**\r\n * `Promise` を `reject` (拒否) する関数の型を提供します。\r\n */\r\nexport type PromiseReject = Action1>;\r\n\r\n/**\r\n * 引数と戻り値を持たない関数型を提供します。\r\n */\r\nexport type Action = () => void;\r\n/**\r\n * 1 個の引数を持つ関数型を提供します。\r\n *\r\n * @template T 引数の型を指定します。\r\n */\r\nexport type Action1 = (value: T) => void;\r\n/**\r\n * 2 個の引数を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n */\r\nexport type Action2 = (value1: T1, value2: T2) => void;\r\n/**\r\n * 3 個の引数を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n */\r\nexport type Action3 = (value1: T1, value2: T2, value3: T3) => void;\r\n/**\r\n * 4 個の引数を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n * @template T4 4 個目の引数の型を指定します。\r\n */\r\nexport type Action4 = (value1: T1, value2: T2, value3: T3, value4: T4) => void;\r\n/**\r\n * 5 個の引数を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n * @template T4 4 個目の引数の型を指定します。\r\n * @template T5 5 個目の引数の型を指定します。\r\n */\r\nexport type Action5 = (value1: T1, value2: T2, value3: T3, value4: T4, value5: T5) => void;\r\n\r\n/**\r\n * 戻り値を持つ関数型を提供します。\r\n *\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func = () => TResult;\r\n/**\r\n * 1 個の引数と戻り値を持つ関数型を提供します。\r\n *\r\n * @template T 引数の型を指定します。\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func1 = (value: T) => TResult;\r\n/**\r\n * 2 個の引数と戻り値を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func2 = (value1: T1, value2: T2) => TResult;\r\n/**\r\n * 3 個の引数と戻り値を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func3 = (value1: T1, value2: T2, value3: T3) => TResult;\r\n/**\r\n * 4 個の引数と戻り値を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n * @template T4 4 個目の引数の型を指定します。\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func4 = (value1: T1, value2: T2, value3: T3, value4: T4) => TResult;\r\n/**\r\n * 5 個の引数と戻り値を持つ関数型を提供します。\r\n *\r\n * @template T1 1 個目の引数の型を指定します。\r\n * @template T2 2 個目の引数の型を指定します。\r\n * @template T3 3 個目の引数の型を指定します。\r\n * @template T4 4 個目の引数の型を指定します。\r\n * @template T5 5 個目の引数の型を指定します。\r\n * @template TResult 戻り値の型を指定します。\r\n */\r\nexport type Func5 = (value1: T1, value2: T2, value3: T3, value4: T4, value5: T5) => TResult;\r\n\r\n/**\r\n * 引数なしのコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n */\r\nexport type Constructor = (new () => TInstance);\r\n\r\n/**\r\n * 1 個の引数を持つコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T 引数の型を指定します。\r\n */\r\nexport type Constructor1 = (new (parameter: T) => TInstance);\r\n\r\n/**\r\n * 2 個の引数を持つコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n */\r\nexport type Constructor2 = (new (parameter1: T1, parameter2: T2) => TInstance);\r\n\r\n/**\r\n * 3 個の引数を持つコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n */\r\nexport type Constructor3 = (new (parameter1: T1, parameter2: T2, parameter3: T3) => TInstance);\r\n\r\n/**\r\n * 4 個の引数を持つコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n * @template T4 4 番目の引数の型を指定します。\r\n */\r\nexport type Constructor4 = (new (parameter1: T1, parameter2: T2, parameter3: T3, parameter4: T4) => TInstance);\r\n\r\n/**\r\n * 5 個の引数を持つコンストラクターを表す型を提供します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n * @template T4 4 番目の引数の型を指定します。\r\n * @template T5 5 番目の引数の型を指定します。\r\n */\r\nexport type Constructor5 = (new (parameter1: T1, parameter2: T2, parameter3: T3, parameter4: T4, parameter5: T5) => TInstance);\r\n\r\n//#endregion 型定義\r\n\r\n//#region 列挙型\r\n\r\n/**\r\n * 曜日を表す列挙値を提供します。\r\n */\r\nexport enum DayOfWeek {\r\n /** 日曜日を表します。 */\r\n Sunday,\r\n /** 月曜日を表します。 */\r\n Monday,\r\n /** 火曜日を表します。 */\r\n Tuesday,\r\n /** 水曜日を表します。 */\r\n Wednesday,\r\n /** 木曜日を表します。 */\r\n Thursday,\r\n /** 金曜日を表します。 */\r\n Friday,\r\n /** 土曜日を表します。 */\r\n Saturday,\r\n}\r\n\r\n/**\r\n * 日時の各部分を表す列挙値を提供します。\r\n */\r\nexport enum DateTimePart {\r\n /** 年代を表します。 */\r\n Era,\r\n /** 年を表します。 */\r\n Year,\r\n /** 月を表します。 */\r\n Month,\r\n /** 日を表します。 */\r\n Day,\r\n /** 時を表します。 */\r\n Hour,\r\n /** 分を表します。 */\r\n Minute,\r\n /** 秒を表します。 */\r\n Second,\r\n /** ミリ秒を表します。 */\r\n Millisecond,\r\n}\r\n\r\n/**\r\n * 代替値を返す処理の種類を表す列挙値を提供します。\r\n */\r\nexport enum Elvis {\r\n /** 既定の動作を表します。 */\r\n Default,\r\n /** 空の場合も含めることを表します。 */\r\n WithEmpty,\r\n /** 空白の場合も含めることを表します。 */\r\n WithWhitespace,\r\n}\r\n\r\n/**\r\n * Window を最初に開いたときに表示される位置を表す列挙値を提供します。\r\n */\r\nexport enum WindowLocation {\r\n /** 画面の中央を表します。 */\r\n CenterScreen,\r\n}\r\n\r\n//#endregion 列挙型\r\n\r\n//#region インターフェイス\r\n\r\n/**\r\n * リソースを解放するためのインターフェイスを提供します。\r\n */\r\nexport interface Disposable {\r\n /** リソースを解放します。 */\r\n dispose(): void;\r\n}\r\n\r\n/**\r\n * リソースの解放状態を管理するインターフェイスを提供します。\r\n */\r\nexport interface Cancelable extends Disposable {\r\n /** リソースを解放したかどうかを表します。 */\r\n readonly isDisposed: boolean;\r\n}\r\n\r\n/**\r\n * リソースを非同期的に解放するためのインターフェイスを提供します。\r\n */\r\nexport interface AsyncDisposable {\r\n /** リソースを非同期的に解放します。 */\r\n disposeAsync(): Promise;\r\n}\r\n\r\n/**\r\n * リソースの非同期的な解放状態を管理するインターフェイスを提供します。\r\n */\r\nexport interface AsyncCancelable extends AsyncDisposable {\r\n /** リソースを解放したかどうかを表します。 */\r\n readonly isDisposed: boolean;\r\n}\r\n\r\n/**\r\n * 配列に似たインターフェイスを提供します。\r\n */\r\nexport interface ArrayMock {\r\n length: number;\r\n [index: number]: T;\r\n}\r\n\r\n/**\r\n * キーが文字列であるディクショナリのインターフェイスを提供します。\r\n *\r\n * @template TValue 値の型を指定します。\r\n */\r\nexport interface StringDictionary {\r\n [key: string]: TValue;\r\n}\r\n\r\n/**\r\n * キーが文字列である読み取り専用ディクショナリのインターフェイスを提供します。\r\n *\r\n * @template TValue 値の型を指定します。\r\n */\r\nexport interface ReadOnlyStringDictionary {\r\n readonly [key: string]: TValue;\r\n}\r\n\r\n/**\r\n * キーが数値であるディクショナリのインターフェイスを提供します。\r\n *\r\n * @template TValue 値の型を指定します。\r\n */\r\nexport interface NumberDictionary {\r\n [key: number]: TValue;\r\n}\r\n\r\n/**\r\n * キーが数値である読み取り専用ディクショナリのインターフェイスを提供します。\r\n *\r\n * @template TValue 値の型を指定します。\r\n */\r\nexport interface ReadOnlyNumberDictionary {\r\n readonly [key: number]: TValue;\r\n}\r\n\r\n/**\r\n * 日時の情報を定義するインターフェイスを提供します。\r\n */\r\nexport interface DateTimeValue {\r\n /** 年を表します。 */\r\n readonly year?: number;\r\n /** 月を表します。 */\r\n readonly month?: number;\r\n /** 日を表します。 */\r\n readonly day?: number;\r\n /** 時を表します。 */\r\n readonly hour?: number;\r\n /** 分を表します。 */\r\n readonly minute?: number;\r\n /** 秒を表します。 */\r\n readonly second?: number;\r\n /** ミリ秒を表します。 */\r\n readonly millisecond?: number;\r\n}\r\n\r\n/**\r\n * キーと値のペアを持つインターフェイスを提供します。\r\n *\r\n * @template TKey キーの型を指定します。\r\n * @template TValue 値の型を指定します。\r\n */\r\nexport interface KeyValuePair {\r\n /** キーを表します。 */\r\n readonly key: TKey;\r\n /** 値を表します。 */\r\n readonly value: TValue;\r\n}\r\n\r\n/**\r\n * 幅と高さを定義するインターフェイスを提供します。\r\n */\r\nexport interface Size {\r\n /** 幅を表します。 */\r\n readonly width: number;\r\n /** 高さを表します。 */\r\n readonly height: number;\r\n}\r\n\r\n/**\r\n * 座標を定義するインターフェイスを提供します。\r\n */\r\nexport interface Point {\r\n /** X 座標を表します。 */\r\n readonly x: number;\r\n /** Y 座標を表します。 */\r\n readonly y: number;\r\n}\r\n\r\n/**\r\n * ウィンドウを新規に開くときのオプション情報を定義するインターフェイスを提供します。\r\n */\r\nexport interface WindowFeature {\r\n /** ウィンドウのサイズを表します。 */\r\n readonly size: Size;\r\n /** ウィンドウの表示位置を表します。 */\r\n readonly location: WindowLocation | Point;\r\n /** メニュー バーの有無を表す値を表します。 */\r\n readonly isMenubar: boolean;\r\n /** ツール バーの有無を表す値を表します。 */\r\n readonly isToolbar: boolean;\r\n /** アドレス バーの有無を表す値を表します。 */\r\n readonly isLocation: boolean;\r\n /** ステータス バーの有無を表す値を表します。 */\r\n readonly isStatus: boolean;\r\n /** リサイズできるかどうかを表す値を表します。 */\r\n readonly isResizable: boolean;\r\n /** スクロール バーの有無を表す値を表します。 */\r\n readonly isScrollbars: boolean;\r\n /** ディレクトリ バーの有無を表す値を表します。 */\r\n readonly isDirectories: boolean;\r\n}\r\n\r\n//#endregion インターフェイス\r\n","import * as String from \"../string\";\r\n\r\n/**\r\n * エラーの基本機能を提供します。\r\n */\r\nexport default abstract class RootError extends Error {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public abstract readonly name: string = String.empty;\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n protected constructor(message = String.empty) {\r\n super(message);\r\n const target: typeof RootError = new.target;\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, target.prototype);\r\n // `this` を束縛\r\n this.toString = this.toString.bind(this);\r\n }\r\n\r\n /**\r\n * オブジェクトの文字列表現を返します。\r\n *\r\n * @returns オブジェクトの文字列表現を返します。\r\n */\r\n public toString(): string {\r\n return `${this.name}: ${this.message}`.trim();\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","/**\r\n * 配列の処理を補助する機能を提供します。\r\n */\r\nimport { ArrayMock, Nullable } from \"./declarations/types\";\r\n\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 配列に要素が含まれているかどうかを判定します。\r\n *\r\n * @template T 要素の型を指定します。\r\n * @param source 配列を指定します。\r\n * @param target 削除する値を指定します。\r\n * @returns 要素が含まれている場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function contains(source: Nullable, target: T): boolean {\r\n return Validator.isNullOrEmpty(source) ? false : source.indexOf(target) > -1;\r\n}\r\n\r\n/**\r\n * 配列の任意の要素を削除します。\r\n *\r\n * @template T 要素の型を指定します。\r\n * @param source 配列を指定します。\r\n * @param target 削除する値を指定します。\r\n * @returns 要素を削除した場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function remove(source: Nullable, target: T): boolean {\r\n if (Validator.isNull(source)) {\r\n return false;\r\n }\r\n let result = false;\r\n source.some((value, index, array) => {\r\n if (value === target) {\r\n array.splice(index, 1);\r\n result = true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 配列をクリアします。\r\n *\r\n * @template T 要素の型を指定します。\r\n * @param source 配列を指定します。\r\n * @return 配列をクリアした場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function clear(source: Nullable>): boolean {\r\n if (Validator.isNull(source)) {\r\n return false;\r\n }\r\n source.length = 0;\r\n return true;\r\n}\r\n\r\n//#endregion 関数\r\n","import * as String from \"../string\";\r\n\r\nimport ArgumentError from \"./argument-error\";\r\n\r\n/**\r\n * メソッドや関数の引数が `null` (未定義) もしくは空白の場合のエラーを提供します。\r\n */\r\nexport default class ArgumentNullOrWhiteSpaceError extends ArgumentError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"ArgumentNullOrWhiteSpaceError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `ArgumentNullOrWhiteSpaceError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `ArgumentNullOrWhiteSpaceError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is ArgumentNullOrWhiteSpaceError {\r\n const result = value instanceof ArgumentNullOrWhiteSpaceError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param parameterName 引数の名称を指定します。\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n public constructor(parameterName = String.empty, message = String.empty) {\r\n super(message, parameterName);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Action, Disposable } from \"../declarations/types\";\r\n\r\nimport * as Array from \"../array\";\r\nimport * as Disposify from \"../disposables/disposify\";\r\nimport * as Promise from \"./promise\";\r\nimport * as Validator from \"../validator\";\r\n\r\nimport CancellationToken from \"./cancellation-token\";\r\n\r\n/**\r\n * 操作を取り消す機能を提供します。\r\n */\r\nexport default class CancellationTokenSource {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を取り消す通知を配信するオブジェクトを表します。 */\r\n public readonly token: CancellationToken;\r\n\r\n /** 操作を取り消すときのコールバックのコレクションを表します。 */\r\n private readonly _callbacks: Action[] = [];\r\n /** 操作の取り消しが要求されたかどうかを表します。 */\r\n private _isCancellationRequested = false;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * 操作の取り消しが要求されたかどうかを表す値を取得します。\r\n */\r\n public get isCancellationRequested(): boolean {\r\n return this._isCancellationRequested;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param callback 操作を取り消すときのコールバックを指定します。\r\n */\r\n public constructor(callback?: Action) {\r\n // @ts-ignore\r\n this.token = new CancellationToken(this) as CancellationToken;\r\n if (!Validator.isNull(callback)) {\r\n this.register(callback);\r\n }\r\n // `this` を束縛\r\n this.cancel = this.cancel.bind(this);\r\n this.cancelAfter = this.cancelAfter.bind(this);\r\n this.register = this.register.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * 操作を取り消します。\r\n */\r\n public cancel(): void {\r\n if (this.isCancellationRequested) {\r\n return;\r\n }\r\n for (const callback of this._callbacks.reverse()) {\r\n callback();\r\n }\r\n Array.clear(this._callbacks);\r\n this._isCancellationRequested = true;\r\n }\r\n\r\n /**\r\n * 指定したミリ秒数の経過後に、操作を取り消します。\r\n *\r\n * @param delayInMilliseconds 取り消す前に待機する時間 (ミリ秒) を指定します。\r\n */\r\n public cancelAfter(delayInMilliseconds: number): void {\r\n if (this.isCancellationRequested) {\r\n return;\r\n }\r\n Promise.delayAsync(this.cancel, delayInMilliseconds);\r\n }\r\n\r\n /**\r\n * 操作を取り消すときのコールバックを登録します。\r\n *\r\n * @param callback 操作を取り消すときのコールバックを指定します。\r\n * @returns 登録したコールバックを解除するオブジェクトを返します。\r\n */\r\n private register(callback: Action): Disposable {\r\n if (this.isCancellationRequested) {\r\n callback();\r\n return Disposify.empty;\r\n }\r\n const callbacks = this._callbacks;\r\n callbacks.push(callback);\r\n const result = Disposify.create(() => Array.remove(callbacks, callback));\r\n return result;\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","/**\r\n * `Disposable` インターフェイスに関連する機能を提供します。\r\n */\r\nimport { Action, Disposable } from \"../declarations/types\";\r\n\r\n//#region 変数\r\n\r\n/**\r\n * `Disposable` インターフェイスの空実装を表します。\r\n */\r\nexport const empty: Disposable = {\r\n dispose: () => { return; },\r\n};\r\n\r\n//#endregion 変数\r\n\r\n//#region 関数\r\n\r\n/**\r\n * リソースを解放するためのオブジェクトを新規作成します。\r\n *\r\n * @param dispose リソースを解放する処理を指定します。\r\n */\r\nexport function create(dispose: Action): Disposable {\r\n return { dispose };\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * `Promise` 型をサポートする機能を提供します。\r\n */\r\nimport { Action3, Func, PromiseReject, PromiseResolve } from \"../declarations/types\";\r\n\r\nimport CancellationToken from \"./cancellation-token\";\r\nimport OperationCanceledError from \"../errors/operation-canceled-error\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * `Promise` を新規作成します。\r\n *\r\n * @param executor `Promise` 作成時にすぐに実行する処理を指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\n// tslint:disable-next-line: async-suffix-requires\r\nexport function create(\r\n executor: Action3, PromiseReject, CancellationToken>,\r\n cancellationToken = CancellationToken.none,\r\n): Promise {\r\n return new Promise((resolve, reject) => {\r\n executor(resolve, reject, cancellationToken);\r\n cancellationToken.register(() => reject(new OperationCanceledError(\"`Promise` has rejected.\")));\r\n });\r\n}\r\n\r\n/**\r\n * 指定した処理を実行中にエラーが発生した場合、`Promise` を `reject` します。\r\n *\r\n * @template TResult 実行する処理の戻り値の型を指定します。\r\n * @param resolve `Promise` を `resolve` (解決) する処理を指定します。\r\n * @param reject `Promise` を `reject` (拒否) する処理を指定します。\r\n * @param func 実行する処理を指定します。\r\n */\r\nexport function tryReject(\r\n resolve: PromiseResolve,\r\n reject: PromiseReject,\r\n func: Func,\r\n): void {\r\n try {\r\n const result = func();\r\n resolve(result);\r\n }\r\n catch (e) {\r\n reject(e as Error);\r\n }\r\n}\r\n\r\n/**\r\n * 指定した処理を非同期に遅延して実行します。\r\n *\r\n * @template TResult 戻り値の型を指定します。\r\n * @param func 実行する処理を指定します。\r\n * @param delayInMilliseconds 遅延時間 (ミリ秒) を指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @param parameters 実行する処理に渡すパラメーターを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nexport function delayAsync(\r\n func: Func,\r\n delayInMilliseconds = 0,\r\n cancellationToken = CancellationToken.none,\r\n // tslint:disable-next-line:no-any trailing-comma\r\n ...parameters: any[]\r\n): Promise {\r\n const result = create(\r\n (resolve, reject, token) => {\r\n const timeoutId = window.setTimeout(\r\n () => tryReject(resolve, reject, func),\r\n delayInMilliseconds,\r\n parameters,\r\n );\r\n token.register(() => window.clearTimeout(timeoutId));\r\n },\r\n cancellationToken,\r\n );\r\n return result;\r\n}\r\n\r\n//#endregion 関数\r\n","import * as String from \"../string\";\r\n\r\nimport RootError from \"./root-error\";\r\n\r\n/**\r\n * 操作を取り消したときのエラーを提供します。\r\n */\r\nexport default class OperationCanceledError extends RootError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"OperationCanceledError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `OperationCanceledError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `OperationCanceledError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is OperationCanceledError {\r\n const result = value instanceof OperationCanceledError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n public constructor(message = String.empty) {\r\n super(message);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { DateTimePart, DateTimeValue, DayOfWeek, Nullable } from \"./declarations/types\";\r\n\r\nimport * as Core from \"./core\";\r\nimport * as String from \"./string\";\r\nimport * as Type from \"./type\";\r\nimport * as Validator from \"./validator\";\r\n\r\nimport DateTimeFormat from \"./date-time-format\";\r\n\r\n/**\r\n * 日時を保持する機能を提供します。\r\n */\r\nexport default class DateTime {\r\n\r\n //#region フィールド\r\n\r\n /** 日付を表します。 */\r\n public readonly value: Date;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /** 現在日時を取得します。 */\r\n public static get now(): DateTime {\r\n return new DateTime();\r\n }\r\n\r\n /** 複製した日時を取得します。 */\r\n public get clone(): DateTime {\r\n return new DateTime(this.value);\r\n }\r\n\r\n /** 年を取得または設定します。 */\r\n public get year(): number {\r\n return this.value.getFullYear();\r\n }\r\n public set year(value: number) {\r\n this.value.setFullYear(value);\r\n }\r\n\r\n /** 月を取得または設定します。 */\r\n public get month(): number {\r\n return this.value.getMonth();\r\n }\r\n public set month(value: number) {\r\n this.value.setMonth(value);\r\n }\r\n\r\n /** 日を取得または設定します。 */\r\n public get day(): number {\r\n return this.value.getDate();\r\n }\r\n public set day(value: number) {\r\n this.value.setDate(value);\r\n }\r\n\r\n /** 時間を取得または設定します。 */\r\n public get hour(): number {\r\n return this.value.getHours();\r\n }\r\n public set hour(value: number) {\r\n this.value.setHours(value);\r\n }\r\n\r\n /** 分を取得または設定します。 */\r\n public get minute(): number {\r\n return this.value.getMinutes();\r\n }\r\n public set minute(value: number) {\r\n this.value.setMinutes(value);\r\n }\r\n\r\n /** 秒を取得または設定します。 */\r\n public get second(): number {\r\n return this.value.getSeconds();\r\n }\r\n public set second(value: number) {\r\n this.value.setSeconds(value);\r\n }\r\n\r\n /** ミリ秒を取得または設定します。 */\r\n public get millisecond(): number {\r\n return this.value.getMilliseconds();\r\n }\r\n public set millisecond(value: number) {\r\n this.value.setMilliseconds(value);\r\n }\r\n\r\n /** ミリ秒形式の日時の値を取得または設定します。 */\r\n public get ticks(): number {\r\n return this.value.getTime();\r\n }\r\n public set ticks(value: number) {\r\n this.value.setTime(value);\r\n }\r\n\r\n /** 曜日を取得します。 */\r\n public get dayOfWeek(): DayOfWeek {\r\n return this.value.getDay() as DayOfWeek;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * 日付を複製します。\r\n *\r\n * @param 処理対象の日付を指定します。\r\n * @returns 複製した日付を返します\r\n */\r\n public static clone(source: Date): Date {\r\n const result = new Date(source.getTime());\r\n return result;\r\n }\r\n\r\n /**\r\n * 日時を表す文字列を日時オブジェクトに変換します。\r\n *\r\n * @param text 日時を表す文字列を指定します。\r\n * @param format 日時の書式を指定します。\r\n * @returns 日時のオブジェクトを返します。\r\n */\r\n public static parse(text: Nullable, format: Nullable): Nullable {\r\n if (Validator.isNullOrWhitespace(text) || Validator.isNullOrWhitespace(format)) {\r\n return null;\r\n }\r\n const formatter = new DateTimeFormat(format);\r\n const result = formatter.parse(text);\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param source 値を指定します。\r\n */\r\n public constructor(source?: Nullable | Nullable | Nullable) {\r\n if (Validator.isNull(source)) {\r\n this.value = new Date();\r\n }\r\n else if (Type.isString(source)) {\r\n this.value = new Date(source);\r\n }\r\n else if (source instanceof Date) {\r\n this.value = DateTime.clone(source);\r\n }\r\n else {\r\n this.value = new Date();\r\n this.set(source);\r\n }\r\n // `this` を束縛\r\n this.format = this.format.bind(this);\r\n this.addYears = this.addYears.bind(this);\r\n this.addMonths = this.addMonths.bind(this);\r\n this.addDays = this.addDays.bind(this);\r\n this.addHours = this.addHours.bind(this);\r\n this.addMinutes = this.addMinutes.bind(this);\r\n this.addSeconds = this.addSeconds.bind(this);\r\n this.addMilliseconds = this.addMilliseconds.bind(this);\r\n this.addTicks = this.addTicks.bind(this);\r\n this.set = this.set.bind(this);\r\n this.truncate = this.truncate.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * 文字列に変換します。\r\n *\r\n * @param format 日時の書式を指定します。\r\n * @returns 日時を表す文字列を返します。\r\n */\r\n public format(format: string): string {\r\n if (Validator.isNullOrWhitespace(format)) {\r\n return String.empty;\r\n }\r\n const formatter = new DateTimeFormat(format);\r\n const result = formatter.format(this);\r\n return result;\r\n }\r\n\r\n /**\r\n * 指定された年数を加算します。\r\n *\r\n * @param value 年数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addYears(value: number): DateTime {\r\n this.year = this.year + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定された月数を加算します。\r\n *\r\n * @param value 月数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addMonths(value: number): DateTime {\r\n this.month = this.month + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定された日数を加算します。\r\n *\r\n * @param value 日数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addDays(value: number): DateTime {\r\n this.day = this.day + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定された時間数を加算します。\r\n *\r\n * @param value 時間数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addHours(value: number): DateTime {\r\n this.hour = this.hour + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定された分数を加算します。\r\n *\r\n * @param value 分数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addMinutes(value: number): DateTime {\r\n this.minute = this.minute + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定された秒数を加算します。\r\n *\r\n * @param value 秒数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addSeconds(value: number): DateTime {\r\n this.second = this.second + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定されたミリ秒数を加算します。\r\n *\r\n * @param value ミリ秒数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addMilliseconds(value: number): DateTime {\r\n this.millisecond = this.millisecond + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定されたミリ秒形式の日時の数を加算します。\r\n *\r\n * @param value ミリ秒形式の日時の数を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public addTicks(value: number): DateTime {\r\n this.ticks = this.ticks + value;\r\n return this;\r\n }\r\n\r\n /**\r\n * 日時を設定します。\r\n *\r\n * @param value 日時の情報を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public set(value: DateTimeValue): DateTime {\r\n this.year = Core.elvis(value.year, () => this.year);\r\n this.month = Core.elvis(value.month, () => this.month);\r\n this.day = Core.elvis(value.day, () => this.day);\r\n this.hour = Core.elvis(value.hour, () => this.hour);\r\n this.minute = Core.elvis(value.minute, () => this.minute);\r\n this.second = Core.elvis(value.second, () => this.second);\r\n this.millisecond = Core.elvis(value.millisecond, () => this.millisecond);\r\n return this;\r\n }\r\n\r\n /**\r\n * 指定した日時の部分より下位を切り捨てます。\r\n *\r\n * @param value 日時の各部分を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public truncate(value?: DateTimePart): DateTime {\r\n const part = Core.elvis(value, DateTimePart.Era);\r\n if (part <= DateTimePart.Era) {\r\n this.year = 0;\r\n }\r\n if (part <= DateTimePart.Year) {\r\n this.month = 0;\r\n }\r\n if (part <= DateTimePart.Month) {\r\n this.day = 1;\r\n }\r\n if (part <= DateTimePart.Day) {\r\n this.hour = 0;\r\n }\r\n if (part <= DateTimePart.Hour) {\r\n this.minute = 0;\r\n }\r\n if (part <= DateTimePart.Minute) {\r\n this.second = 0;\r\n }\r\n if (part <= DateTimePart.Second) {\r\n this.millisecond = 0;\r\n }\r\n return this;\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Nullable } from \"./declarations/types\";\r\n\r\nimport * as String from \"./string\";\r\nimport * as Validator from \"./validator\";\r\n\r\nimport ArgumentNullOrWhiteSpaceError from \"./errors/argument-null-or-whitespace-error\";\r\nimport DateFormat from \"./date-format\";\r\nimport DateTime from \"./date-time\";\r\n\r\n/**\r\n * 日時を変換する機能を提供します。\r\n */\r\nexport default class DateTimeFormat {\r\n\r\n //#region フィールド\r\n\r\n /** 日時を変換するオブジェクトを表します。 */\r\n private readonly _formatter: DateFormat;\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param format 日時の書式を指定します。\r\n * @throws {ArgumentNullOrWhiteSpaceError} `format` が `null` (未定義) または空白文字の場合に発生します。\r\n */\r\n public constructor(format: string) {\r\n if (Validator.isNullOrWhitespace(format)) {\r\n throw new ArgumentNullOrWhiteSpaceError(\"format\");\r\n }\r\n this._formatter = new DateFormat(format);\r\n // `this` を束縛\r\n this.format = this.format.bind(this);\r\n this.parse = this.parse.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * 文字列に変換します。\r\n *\r\n * @param dateTime 日時を指定します。\r\n * @returns 日時を表す文字列を返します。\r\n */\r\n public format(dateTime: Nullable): string {\r\n if (Validator.isNull(dateTime)) {\r\n return String.empty;\r\n }\r\n const result = this.formatDate(dateTime.value);\r\n return result;\r\n }\r\n\r\n /**\r\n * 文字列に変換します。\r\n *\r\n * @param date 日時を指定します。\r\n * @returns 日時を表す文字列を返します。\r\n */\r\n public formatDate(date: Nullable): string {\r\n if (Validator.isNull(date)) {\r\n return String.empty;\r\n }\r\n const result = this._formatter.format(date);\r\n return result;\r\n }\r\n\r\n /**\r\n * 日時のオブジェクトに変換します。\r\n *\r\n * @param text 日時を表す文字列を指定します。\r\n * @returns 日時のオブジェクトを返します。\r\n */\r\n public parse(text: Nullable): Nullable {\r\n if (Validator.isNullOrWhitespace(text)) {\r\n return null;\r\n }\r\n const date = this.parseDate(text);\r\n if (Validator.isNull(date)) {\r\n return null;\r\n }\r\n const result = new DateTime(date);\r\n return result;\r\n }\r\n\r\n /**\r\n * 日時のオブジェクトに変換します。\r\n *\r\n * @param text 日時を表す文字列を指定します。\r\n * @returns 日時のオブジェクトを返します。\r\n */\r\n public parseDate(text: Nullable): Nullable {\r\n if (Validator.isNullOrWhitespace(text)) {\r\n return null;\r\n }\r\n const result = this._formatter.parse(text);\r\n return result;\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","/**\r\n * 任意の処理を実行する機能を提供します。\r\n */\r\nimport { Action, Action1, Func, Nullable } from \"./declarations/types\";\r\n\r\nimport * as Validator from \"./validator\";\r\n\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 指定した処理を実行します。\r\n *\r\n * @template TResult 戻り値の型を指定します。\r\n * @param func 実行する処理を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\nexport function run(func: Func): TResult {\r\n return func();\r\n}\r\n\r\n/**\r\n * 指定した処理を安全に実行します。\r\n *\r\n * @template TError エラーの型を指定します。\r\n * @param action 実行する処理を指定します。\r\n * @param onError 例外が発生したときの処理を指定します。\r\n * @param onFinally 最後に必ず実行する処理を指定します。\r\n * @returns {boolean} 処理を正常に実行した場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\nexport function tryRun(action: Action, onError?: Action1, onFinally?: Action): boolean {\r\n try {\r\n action();\r\n return true;\r\n }\r\n catch (e) {\r\n if (!Validator.isNull(onError)) {\r\n onError(e as TError);\r\n }\r\n return false;\r\n }\r\n finally {\r\n if (!Validator.isNull(onFinally)) {\r\n onFinally();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 指定した処理を安全に実行します。\r\n *\r\n * @template TResult 戻り値の型を指定します。\r\n * @template TError エラーの型を指定します。\r\n * @param func 実行する処理を指定します。\r\n * @param onError 例外が発生したときの処理を指定します。\r\n * @param onFinally 最後に必ず実行する処理を指定します。\r\n * @returns {TResult} 処理結果を返します。\r\n */\r\nexport function tryResult(func: Func, onError?: Action1, onFinally?: Action): Nullable {\r\n try {\r\n const result = func();\r\n return result;\r\n }\r\n catch (e) {\r\n if (!Validator.isNull(onError)) {\r\n onError(e as TError);\r\n }\r\n return null;\r\n }\r\n finally {\r\n if (!Validator.isNull(onFinally)) {\r\n onFinally();\r\n }\r\n }\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * エントリ ポイントを提供します。\r\n */\r\nimport AbortDisposable from \"./disposables/abort-disposable\";\r\nimport AbortAsyncDisposable from \"./disposables/abort-async-disposable\";\r\nimport ArgumentError from \"./errors/argument-error\";\r\nimport ArgumentNullOrEmptyError from \"./errors/argument-null-or-empty-error\";\r\nimport ArgumentNullOrUndefinedError from \"./errors/argument-null-or-undefined-error\";\r\nimport ArgumentNullOrWhiteSpaceError from \"./errors/argument-null-or-whitespace-error\";\r\nimport ArgumentOutOfRangeError from \"./errors/argument-out-of-range-error\";\r\nimport CancellationDisposable from \"./disposables/cancellation-disposable\";\r\nimport CancellationAsyncDisposable from \"./disposables/cancellation-async-disposable\";\r\nimport CancellationToken from \"./asynchronous/cancellation-token\";\r\nimport CancellationTokenSource from \"./asynchronous/cancellation-token-source\";\r\nimport CompositeDisposable from \"./disposables/composite-disposable\";\r\nimport CompositeAsyncDisposable from \"./disposables/composite-async-disposable\";\r\nimport DateTime from \"./date-time\";\r\nimport DateTimeFormat from \"./date-time-format\";\r\nimport InvalidOperationError from \"./errors/invalid-operation-error\";\r\nimport OperationCanceledError from \"./errors/operation-canceled-error\";\r\nimport RootError from \"./errors/root-error\";\r\nimport Using from \"./using\";\r\nimport UsingAsync from \"./using-async\";\r\n\r\nexport * from \"./declarations/styles\";\r\nexport * from \"./declarations/tuple\";\r\nexport * from \"./declarations/types\";\r\nexport * as Activator from \"./activator\";\r\nexport * as Array from \"./array\";\r\n// `TypeScript 3.7` において、`Assertion Functions` は 「明示的に型を指定している変数・関数でないとエラーになる」 という制約があり使用できないケースがあるため非公開。\r\n// export * as Assertor from \"./assertor\";\r\nexport * as Async from \"./asynchronous/async\";\r\nexport * as AsyncDisposify from \"./disposables/async-disposify\";\r\nexport * as Blob from \"./asynchronous/blob\";\r\nexport * as Core from \"./core\";\r\nexport * as Disposify from \"./disposables/disposify\";\r\nexport * as Error from \"./error\";\r\nexport * as HtmlSymbol from \"./declarations/html-symbol\";\r\nexport * as HttpMethod from \"./declarations/http-method\";\r\nexport * as Invoker from \"./invoker\";\r\nexport * as Media from \"./media\";\r\nexport * as Promise from \"./asynchronous/promise\";\r\nexport * as String from \"./string\";\r\nexport * as Type from \"./type\";\r\nexport * as Unsafe from \"./unsafe\";\r\nexport * as Uri from \"./uri\";\r\nexport * as Validator from \"./validator\";\r\nexport * as Window from \"./window\";\r\nexport {\r\n AbortDisposable,\r\n AbortAsyncDisposable,\r\n ArgumentError,\r\n ArgumentNullOrEmptyError,\r\n ArgumentNullOrUndefinedError,\r\n ArgumentNullOrWhiteSpaceError,\r\n ArgumentOutOfRangeError,\r\n CancellationDisposable,\r\n CancellationAsyncDisposable,\r\n CancellationToken,\r\n CancellationTokenSource,\r\n CompositeDisposable,\r\n CompositeAsyncDisposable,\r\n DateTime,\r\n DateTimeFormat,\r\n InvalidOperationError,\r\n OperationCanceledError,\r\n RootError,\r\n Using,\r\n UsingAsync,\r\n};\r\n","import { Cancelable } from \"../declarations/types\";\r\n\r\n/**\r\n * リソースを解放するときに中断状態になる機能を提供します。\r\n */\r\nexport default class AbortDisposable implements Cancelable {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を中断するオブジェクトを表します。 */\r\n private readonly _abortController: AbortController;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._abortController.signal.aborted;\r\n }\r\n\r\n /**\r\n * 操作を中断する通知を配信するオブジェクトを取得します。\r\n */\r\n public get signal(): AbortSignal {\r\n return this._abortController.signal;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param abortController 操作を中断するオブジェクトを指定します。\r\n */\r\n public constructor(abortController = new AbortController()) {\r\n this._abortController = abortController;\r\n // `this` を束縛\r\n this.dispose = this.dispose.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを解放します。\r\n */\r\n public dispose(): void {\r\n this._abortController.abort();\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { AsyncCancelable } from \"../declarations/types\";\r\n\r\n/**\r\n * リソースを非同期的に解放するときに中断状態になる機能を提供します。\r\n */\r\nexport default class AbortAsyncDisposable implements AsyncCancelable {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を中断するオブジェクトを表します。 */\r\n private readonly _abortController: AbortController;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._abortController.signal.aborted;\r\n }\r\n\r\n /**\r\n * 操作を中断する通知を配信するオブジェクトを取得します。\r\n */\r\n public get signal(): AbortSignal {\r\n return this._abortController.signal;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param abortController 操作を中断するオブジェクトを指定します。\r\n */\r\n public constructor(abortController = new AbortController()) {\r\n this._abortController = abortController;\r\n // `this` を束縛\r\n this.disposeAsync = this.disposeAsync.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放します。\r\n */\r\n public disposeAsync(): Promise {\r\n this._abortController.abort();\r\n return Promise.resolve();\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import * as String from \"../string\";\r\n\r\nimport ArgumentError from \"./argument-error\";\r\n\r\n/**\r\n * メソッドや関数の引数が `null` (未定義) もしくは空の場合のエラーを提供します。\r\n */\r\nexport default class ArgumentNullOrEmptyError extends ArgumentError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"ArgumentNullOrEmptyError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `ArgumentNullOrEmptyError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `ArgumentNullOrEmptyError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is ArgumentNullOrEmptyError {\r\n const result = value instanceof ArgumentNullOrEmptyError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param parameterName 引数の名称を指定します。\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n public constructor(parameterName = String.empty, message = String.empty) {\r\n super(message, parameterName);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import * as String from \"../string\";\r\n\r\nimport ArgumentError from \"./argument-error\";\r\n\r\n/**\r\n * メソッドや関数の引数が `null` もしくは未定義の場合のエラーを提供します。\r\n */\r\nexport default class ArgumentNullOrUndefinedError extends ArgumentError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"ArgumentNullOrUndefinedError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `ArgumentNullOrUndefinedError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `ArgumentNullOrUndefinedError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is ArgumentNullOrUndefinedError {\r\n const result = value instanceof ArgumentNullOrUndefinedError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param parameterName 引数の名称を指定します。\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n public constructor(parameterName = String.empty, message = String.empty) {\r\n super(message, parameterName);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Nullable } from \"../declarations/types\";\r\n\r\nimport * as String from \"../string\";\r\nimport * as Validator from \"../validator\";\r\n\r\nimport ArgumentError from \"./argument-error\";\r\n\r\n/**\r\n * メソッドや関数の引数が許容範囲外である場合のエラーを提供します。\r\n */\r\nexport default class ArgumentOutOfRangeError extends ArgumentError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"ArgumentOutOfRangeError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `ArgumentOutOfRangeError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `ArgumentOutOfRangeError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is ArgumentOutOfRangeError {\r\n const result = value instanceof ArgumentOutOfRangeError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param parameterName 引数の名称を指定します。\r\n * @param message メッセージ文字列を指定します。\r\n * @param actualValue 引数の実際の値を指定します。\r\n */\r\n public constructor(parameterName = String.empty, message = String.empty, actualValue: Nullable = null) {\r\n super(Validator.isNull(actualValue) ? message : `${message} { Actual Value: ${actualValue} }`, parameterName);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Cancelable } from \"../declarations/types\";\r\n\r\nimport CancellationToken from \"../asynchronous/cancellation-token\";\r\nimport CancellationTokenSource from \"../asynchronous/cancellation-token-source\";\r\n\r\n/**\r\n * リソースを解放するときに取り消し状態になる機能を提供します。\r\n */\r\nexport default class CancellationDisposable implements Cancelable {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を取り消すオブジェクトを表します。 */\r\n private readonly _cancellationTokenSource: CancellationTokenSource;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._cancellationTokenSource.isCancellationRequested;\r\n }\r\n\r\n /**\r\n * 操作を取り消す通知を配信するオブジェクトを取得します。\r\n */\r\n public get token(): CancellationToken {\r\n return this._cancellationTokenSource.token;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param cancellationTokenSource 操作を取り消すオブジェクトを指定します。\r\n */\r\n public constructor(cancellationTokenSource = new CancellationTokenSource()) {\r\n this._cancellationTokenSource = cancellationTokenSource;\r\n // `this` を束縛\r\n this.dispose = this.dispose.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを解放します。\r\n */\r\n public dispose(): void {\r\n this._cancellationTokenSource.cancel();\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { AsyncCancelable } from \"../declarations/types\";\r\n\r\nimport CancellationToken from \"../asynchronous/cancellation-token\";\r\nimport CancellationTokenSource from \"../asynchronous/cancellation-token-source\";\r\n\r\n/**\r\n * リソースを非同期的に解放するときに取り消し状態になる機能を提供します。\r\n */\r\nexport default class CancellationAsyncDisposable implements AsyncCancelable {\r\n\r\n //#region フィールド\r\n\r\n /** 操作を取り消すオブジェクトを表します。 */\r\n private readonly _cancellationTokenSource: CancellationTokenSource;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._cancellationTokenSource.isCancellationRequested;\r\n }\r\n\r\n /**\r\n * 操作を取り消す通知を配信するオブジェクトを取得します。\r\n */\r\n public get token(): CancellationToken {\r\n return this._cancellationTokenSource.token;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param cancellationTokenSource 操作を取り消すオブジェクトを指定します。\r\n */\r\n public constructor(cancellationTokenSource = new CancellationTokenSource()) {\r\n this._cancellationTokenSource = cancellationTokenSource;\r\n // `this` を束縛\r\n this.disposeAsync = this.disposeAsync.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放します。\r\n */\r\n public disposeAsync(): Promise {\r\n this._cancellationTokenSource.cancel();\r\n return Promise.resolve();\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Cancelable, Disposable } from \"../declarations/types\";\r\n\r\nimport * as Array from \"../array\";\r\n\r\n/**\r\n * 複数のリソースをまとめて解放する機能を提供します。\r\n */\r\nexport default class CompositeDisposable implements Cancelable {\r\n\r\n //#region フィールド\r\n\r\n /** リソースを解放するオブジェクトのコレクションを表します。 */\r\n private readonly _disposables: Disposable[];\r\n /** リソースを解放したかどうかを表します。 */\r\n private _isDisposed = false;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._isDisposed;\r\n }\r\n\r\n /**\r\n * リソースを解放するオブジェクトの登録数を取得します。\r\n */\r\n public get count(): number {\r\n return this._disposables.length;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param disposables リソースを解放するオブジェクトのコレクションを指定します。\r\n */\r\n public constructor(...disposables: Disposable[]) {\r\n this._disposables = disposables;\r\n // `this` を束縛\r\n this.contains = this.contains.bind(this);\r\n this.add = this.add.bind(this);\r\n this.remove = this.remove.bind(this);\r\n this.clear = this.clear.bind(this);\r\n this.dispose = this.dispose.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを解放するオブジェクトが含まれているかどうかを判定します。\r\n *\r\n * @param item リソースを解放するオブジェクトを指定します。\r\n * @returns リソースを解放するオブジェクトが含まれている場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n public contains(item: Disposable): boolean {\r\n if (this.isDisposed) {\r\n return false;\r\n }\r\n const result = Array.contains(this._disposables, item);\r\n return result;\r\n }\r\n\r\n /**\r\n * リソースを解放するオブジェクトを登録します。\r\n *\r\n * @param item リソースを解放するオブジェクトを指定します。\r\n */\r\n public add(item: Disposable): void {\r\n if (this.isDisposed) {\r\n return item.dispose();\r\n }\r\n this._disposables.push(item);\r\n }\r\n\r\n /**\r\n * リソースを解放するオブジェクト削除します。\r\n *\r\n * @param item リソースを解放するオブジェクトを指定します。\r\n * @returns リソースを解放するオブジェクトを削除した場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n public remove(item: Disposable): boolean {\r\n if (this.isDisposed) {\r\n return false;\r\n }\r\n const result = Array.remove(this._disposables, item);\r\n if (result) {\r\n item.dispose();\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * リソースを解放する登録済みのオブジェクトをすべて削除します。\r\n */\r\n public clear(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n for (const disposable of this._disposables) {\r\n disposable.dispose();\r\n }\r\n Array.clear(this._disposables);\r\n }\r\n\r\n /**\r\n * リソースを解放します。\r\n */\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.clear();\r\n this._isDisposed = true;\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { AsyncCancelable, AsyncDisposable } from \"../declarations/types\";\r\n\r\nimport * as Array from \"../array\";\r\n\r\n/**\r\n * 複数のリソースをまとめて非同期的に解放する機能を提供します。\r\n */\r\nexport default class CompositeAsyncDisposable implements AsyncCancelable {\r\n\r\n //#region フィールド\r\n\r\n /** リソースを非同期的に解放するオブジェクトのコレクションを表します。 */\r\n private readonly _disposables: AsyncDisposable[];\r\n /** リソースを解放したかどうかを表します。 */\r\n private _isDisposed = false;\r\n\r\n //#endregion フィールド\r\n\r\n //#region プロパティ\r\n\r\n /**\r\n * リソースを解放したかどうかを表す値を取得します。\r\n */\r\n public get isDisposed(): boolean {\r\n return this._isDisposed;\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放するオブジェクトの登録数を取得します。\r\n */\r\n public get count(): number {\r\n return this._disposables.length;\r\n }\r\n\r\n //#endregion プロパティ\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param disposables リソースを非同期的に解放するオブジェクトのコレクションを指定します。\r\n */\r\n public constructor(...disposables: AsyncDisposable[]) {\r\n this._disposables = disposables;\r\n // `this` を束縛\r\n this.contains = this.contains.bind(this);\r\n this.addAsync = this.addAsync.bind(this);\r\n this.removeAsync = this.removeAsync.bind(this);\r\n this.clearAsync = this.clearAsync.bind(this);\r\n this.disposeAsync = this.disposeAsync.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放するオブジェクトが含まれているかどうかを判定します。\r\n *\r\n * @param item リソースを非同期的に解放するオブジェクトを指定します。\r\n * @returns リソースを非同期的に解放するオブジェクトが含まれている場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n public contains(item: AsyncDisposable): boolean {\r\n if (this.isDisposed) {\r\n return false;\r\n }\r\n const result = Array.contains(this._disposables, item);\r\n return result;\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放するオブジェクトを非同期的に登録します。\r\n *\r\n * @param item リソースを非同期的に解放するオブジェクトを指定します。\r\n * @returns 非同期操作を返します。\r\n */\r\n public async addAsync(item: AsyncDisposable): Promise {\r\n if (this.isDisposed) {\r\n await item.disposeAsync();\r\n return;\r\n }\r\n this._disposables.push(item);\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放するオブジェクト非同期的に削除します。\r\n *\r\n * @param item リソースを非同期的に解放するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\n public async removeAsync(item: AsyncDisposable): Promise {\r\n if (this.isDisposed) {\r\n return Promise.resolve(false);\r\n }\r\n const result = Array.remove(this._disposables, item);\r\n if (result) {\r\n await item.disposeAsync();\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * リソースを非同期的に解放する登録済みのオブジェクトをすべて非同期的に削除します。\r\n *\r\n * @returns 非同期操作を返します。\r\n */\r\n public async clearAsync(): Promise {\r\n if (this.isDisposed) {\r\n return Promise.resolve();\r\n }\r\n const promises: Promise[] = [];\r\n for (const disposable of this._disposables) {\r\n promises.push(disposable.disposeAsync());\r\n }\r\n await Promise.all(promises);\r\n Array.clear(this._disposables);\r\n }\r\n\r\n /**\r\n * リソースを解放します。\r\n */\r\n public async disposeAsync(): Promise {\r\n if (this.isDisposed) {\r\n return Promise.resolve();\r\n }\r\n await this.clearAsync();\r\n this._isDisposed = true;\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Func2, Func3, Nullable, ReadOnlyStringDictionary } from \"./declarations/types\";\r\n\r\nimport * as StringUtility from \"./string\";\r\nimport * as Type from \"./type\";\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region インターフェイス\r\n\r\n/**\r\n * 解析結果を格納するインターフェイスを提供します。\r\n */\r\ninterface ParseResult {\r\n /** [年] を取得または設定します。 */\r\n year: number;\r\n /** [月] を取得または設定します。 */\r\n month: number;\r\n /** [日] を取得または設定します。 */\r\n day: number;\r\n /** [時間] を取得または設定します。 */\r\n hour: number;\r\n /** [分] を取得または設定します。 */\r\n min: number;\r\n /** [秒] を取得または設定します。 */\r\n sec: number;\r\n /** [ミリ秒] を取得または設定します。 */\r\n msec: number;\r\n}\r\n\r\n//#endregion インターフェイス\r\n\r\n/**\r\n * --------------------------------------------------------\r\n * dateformat.js - Simple date formatter\r\n * Version 1.1 (Update 2008/04/02)\r\n *\r\n * Copyright (c) 2007-2008 onozaty (http://www.enjoyxstudy.com)\r\n *\r\n * Released under an MIT-style license.\r\n *\r\n * For details, see the web site:\r\n * http://www.enjoyxstudy.com/javascript/dateformat/\r\n *\r\n * --------------------------------------------------------\r\n * patterns\r\n * ```\r\n * y : Year ex. \"yyyy\" -> \"2007\", \"yy\" -> \"07\"\r\n * M : Month ex. \"MM\" -> \"05\" \"12\", \"M\" -> \"5\" \"12\"\r\n * d : Day ex. \"dd\" -> \"09\" \"30\", \"d\" -> \"9\" \"30\"\r\n * H : Hour (0-23) ex. \"HH\" -> \"00\" \"23\", \"H\" -> \"0\" \"23\"\r\n * m : Minute ex. \"mm\" -> \"01\" \"59\", \"m\" -> \"1\" \"59\"\r\n * s : Second ex. \"ss\" -> \"00\" \"59\", \"H\" -> \"0\" \"59\"\r\n * S : Millisecond ex. \"SSS\" -> \"000\" \"012\" \"999\",\r\n * \"SS\" -> \"00\" \"12\" \"999\", \"S\" -> \"0\" \"12\" \"999\"\r\n * ```\r\n *\r\n * Text can be quoted using single quotes (') to avoid interpretation.\r\n * \"''\" represents a single quote.\r\n *\r\n *\r\n * Using..\r\n * ```js\r\n * const fmt = new DateFormat(\"yyyy/MM/dd HH:mm:ss SSS\");\r\n *\r\n * const str = fmt.format(new Date()); // \"2007/05/10 12:21:19 002\"\r\n * const date = fmt.parse(\"2007/05/10 12:21:19 002\"); // return Date object\r\n * ```\r\n * --------------------------------------------------------\r\n */\r\nexport default class DateFormat {\r\n\r\n //#region フィールド\r\n\r\n /** 日付の書式を表します。 */\r\n private readonly _patterns: string[] = [];\r\n\r\n /** 日付を文字列に変換する処理を表します。 */\r\n private readonly _formatter: ReadOnlyStringDictionary>> = {\r\n \"y\": (date, pattern) => {\r\n // Year\r\n let year = String(date.getFullYear());\r\n year = pattern.length <= 2 ? year.substring(2, 4) : this.zeroPadding(year, pattern.length);\r\n return year;\r\n },\r\n \"M\": (date, pattern) => {\r\n // Month in year\r\n return this.zeroPadding(String(date.getMonth() + 1), pattern.length);\r\n },\r\n \"d\": (date, pattern) => {\r\n // Day in month\r\n return this.zeroPadding(String(date.getDate()), pattern.length);\r\n },\r\n \"H\": (date, pattern) => {\r\n // Hour in day (0-23)\r\n return this.zeroPadding(String(date.getHours()), pattern.length);\r\n },\r\n \"m\": (date, pattern) => {\r\n // Minute in hour\r\n return this.zeroPadding(String(date.getMinutes()), pattern.length);\r\n },\r\n \"s\": (date, pattern) => {\r\n // Second in minute\r\n return this.zeroPadding(String(date.getSeconds()), pattern.length);\r\n },\r\n \"S\": (date, pattern) => {\r\n // Millisecond\r\n return this.zeroPadding(String(date.getMilliseconds()), pattern.length);\r\n },\r\n \"'\": (_, pattern) => {\r\n // escape\r\n if (pattern === \"''\") {\r\n return \"'\";\r\n }\r\n else {\r\n return pattern.replace(/'/g, StringUtility.empty);\r\n }\r\n },\r\n };\r\n\r\n /** 文字列を日付に変換する処理を表します。 */\r\n private readonly _parser: ReadOnlyStringDictionary>>> = {\r\n \"y\": (text, pattern, result) => {\r\n // Year\r\n let year: string;\r\n if (pattern.length <= 2) {\r\n year = text.substring(0, 2);\r\n year = parseInt(year, 10) < 70 ? \"20\" + year : \"19\" + year;\r\n text = text.substring(2);\r\n }\r\n else {\r\n const length = (pattern.length === 3) ? 4 : pattern.length;\r\n year = text.substring(0, length);\r\n text = text.substring(length);\r\n }\r\n if (!this.isNumber(year)) {\r\n return null; // error\r\n }\r\n result.year = parseInt(year, 10);\r\n return text;\r\n },\r\n \"M\": (text, pattern, result) => {\r\n // Month in year\r\n let month: string;\r\n if (pattern.length === 1 && text.length > 1\r\n && text.substring(0, 2).match(/1[0-2]/) != null) {\r\n month = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n month = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(month)) {\r\n return null; // error\r\n }\r\n result.month = parseInt(month, 10);\r\n return text;\r\n },\r\n \"d\": (text, pattern, result) => {\r\n // Day in month\r\n let day;\r\n if (pattern.length === 1 && text.length > 1\r\n && text.substring(0, 2).match(/1[0-9]|2[0-9]|3[0-1]/) != null) {\r\n day = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n day = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(day)) {\r\n return null; // error\r\n }\r\n result.day = parseInt(day, 10);\r\n return text;\r\n },\r\n \"H\": (text, pattern, result) => {\r\n // Hour in day (0-23)\r\n let hour;\r\n if (pattern.length === 1 && text.length > 1\r\n && text.substring(0, 2).match(/1[0-9]|2[0-3]/) != null) {\r\n hour = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n hour = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(hour)) {\r\n return null; // error\r\n }\r\n result.hour = parseInt(hour, 10);\r\n return text;\r\n },\r\n \"m\": (text, pattern, result) => {\r\n // Minute in hour\r\n let min;\r\n if (pattern.length === 1 && text.length > 1\r\n && text.substring(0, 2).match(/[1-5][0-9]/) != null) {\r\n min = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n min = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(min)) {\r\n return null; // error\r\n }\r\n result.min = parseInt(min, 10);\r\n return text;\r\n },\r\n \"s\": (text, pattern, result) => {\r\n // Second in minute\r\n let sec;\r\n if (pattern.length === 1 && text.length > 1\r\n && text.substring(0, 2).match(/[1-5][0-9]/) != null) {\r\n sec = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n sec = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(sec)) {\r\n return null; // error\r\n }\r\n result.sec = parseInt(sec, 10);\r\n return text;\r\n },\r\n \"S\": (text, pattern, result) => {\r\n // Millimsecond\r\n let msec;\r\n if (pattern.length === 1 || pattern.length === 2) {\r\n if (text.length > 2 && text.substring(0, 3).match(/[1-9][0-9][0-9]/) != null) {\r\n msec = text.substring(0, 3);\r\n text = text.substring(3);\r\n }\r\n else if (text.length > 1 && text.substring(0, 2).match(/[1-9][0-9]/) != null) {\r\n msec = text.substring(0, 2);\r\n text = text.substring(2);\r\n }\r\n else {\r\n msec = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n }\r\n else {\r\n msec = text.substring(0, pattern.length);\r\n text = text.substring(pattern.length);\r\n }\r\n if (!this.isNumber(msec)) {\r\n return null; // error\r\n }\r\n result.msec = parseInt(msec, 10);\r\n return text;\r\n },\r\n \"'\": (text, pattern, _) => {\r\n // escape\r\n pattern = pattern === \"''\" ? \"'\" : pattern.replace(/'/g, StringUtility.empty);\r\n if (text.indexOf(pattern) !== 0) {\r\n return null; // error\r\n }\r\n else {\r\n return text.substring(pattern.length);\r\n }\r\n },\r\n };\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param pattern 日付の書式を指定します。\r\n */\r\n public constructor(pattern: string) {\r\n this._patterns = [];\r\n for (let i = 0; i < pattern.length; i++) {\r\n const char = pattern.charAt(i);\r\n if (this._patterns.length === 0) {\r\n this._patterns[0] = char;\r\n }\r\n else {\r\n const index = this._patterns.length - 1;\r\n if (this._patterns[index].charAt(0) === \"'\") {\r\n if (this._patterns[index].length === 1\r\n || this._patterns[index].charAt(this._patterns[index].length - 1) !== \"'\") {\r\n this._patterns[index] += char;\r\n } else {\r\n this._patterns[index + 1] = char;\r\n }\r\n } else if (this._patterns[index].charAt(0) === char) {\r\n this._patterns[index] += char;\r\n } else {\r\n this._patterns[index + 1] = char;\r\n }\r\n }\r\n }\r\n // `this` を束縛\r\n this.format = this.format.bind(this);\r\n this.parse = this.parse.bind(this);\r\n this.formatWord = this.formatWord.bind(this);\r\n this.parseWord = this.parseWord.bind(this);\r\n this.zeroPadding = this.zeroPadding.bind(this);\r\n this.isNumber = this.isNumber.bind(this);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n /**\r\n * 日付を文字列に変換します。\r\n *\r\n * @param date 日付を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public format(date: Nullable): string {\r\n if (Validator.isNull(date)) {\r\n return StringUtility.empty;\r\n }\r\n const result: string[] = [];\r\n for (let i = 0; i < this._patterns.length; i++) {\r\n result[i] = this.formatWord(date, this._patterns[i]);\r\n }\r\n return result.join(StringUtility.empty);\r\n }\r\n\r\n /**\r\n * 文字列を日付に変換します。\r\n *\r\n * @param text 日付を表す文字列を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n public parse(text: Nullable): Nullable {\r\n if (!Type.isString(text) || Validator.isNullOrWhitespace(text)) {\r\n return null;\r\n }\r\n const result: ParseResult = { year: 1970, month: 1, day: 1, hour: 0, min: 0, sec: 0, msec: 0 };\r\n\r\n for (const pattern of this._patterns) {\r\n if (text === StringUtility.empty) {\r\n return null; // parse error!!\r\n }\r\n text = this.parseWord(text, pattern, result);\r\n if (Validator.isNull(text)) {\r\n return null; // parse error!!\r\n }\r\n }\r\n if (text !== StringUtility.empty) {\r\n return null; // parse error!!\r\n }\r\n return new Date(\r\n result.year,\r\n result.month - 1,\r\n result.day,\r\n result.hour,\r\n result.min,\r\n result.sec,\r\n result.msec,\r\n );\r\n }\r\n\r\n /**\r\n * 書式に基づいて、日付を変換します。\r\n *\r\n * @param date 日付を指定します。\r\n * @param pattern 日付の書式を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n private formatWord(date: Date, pattern: string): string {\r\n const formatter = this._formatter[pattern.charAt(0)];\r\n if (!Validator.isNull(formatter)) {\r\n return formatter.apply(this, [date, pattern]);\r\n }\r\n return pattern;\r\n }\r\n\r\n /**\r\n * 書式に基づいて、文字列を変換します。\r\n *\r\n * @param text 文字列を指定します。\r\n * @param pattern 日付の書式を指定します。\r\n * @param result 処理結果を返します。\r\n */\r\n private parseWord(text: string, pattern: string, result: ParseResult): Nullable {\r\n const parser = this._parser[pattern.charAt(0)];\r\n if (!Validator.isNull(parser)) {\r\n return parser.apply(this, [text, pattern, result]);\r\n }\r\n else if (Validator.isNull(text) || text.indexOf(pattern) !== 0) {\r\n return null;\r\n }\r\n return text.substring(pattern.length);\r\n }\r\n\r\n /**\r\n * ゼロ埋めします。\r\n *\r\n * @param str 文字列を指定します。\r\n * @param length 長さを指定します。\r\n * @returns 処理結果を返します。\r\n */\r\n private zeroPadding(str: string, length: number): string {\r\n if (str.length >= length) {\r\n return str;\r\n }\r\n return new Array(length - str.length + 1).join(\"0\") + str;\r\n }\r\n\r\n /**\r\n * 文字列が数値かどうかを判定します。\r\n *\r\n * @param str 文字列を指定します。\r\n * @returns 文字列が数値の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n private isNumber(str: string): boolean {\r\n return /^[0-9]*$/.test(str);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import * as String from \"../string\";\r\n\r\nimport RootError from \"./root-error\";\r\n\r\n/**\r\n * 無効な操作により処理を続行できない場合のエラーを提供します。\r\n */\r\nexport default class InvalidOperationError extends RootError {\r\n\r\n //#region フィールド\r\n\r\n /** エラーの名称を表します。 */\r\n public readonly name: string = \"InvalidOperationError\";\r\n\r\n //#endregion フィールド\r\n\r\n //#region メソッド\r\n\r\n /**\r\n * `InvalidOperationError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `InvalidOperationError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n // tslint:disable-next-line: no-any\r\n public static isInstance(value: any): value is InvalidOperationError {\r\n const result = value instanceof InvalidOperationError;\r\n return result;\r\n }\r\n\r\n /**\r\n * コンストラクター\r\n *\r\n * @constructor\r\n * @param message メッセージ文字列を指定します。\r\n */\r\n public constructor(message = String.empty) {\r\n super(message);\r\n // 変更不可\r\n Object.seal(this);\r\n }\r\n\r\n //#endregion メソッド\r\n}\r\n","import { Disposable, Func1 } from \"./declarations/types\";\r\n\r\nimport * as Validator from \"./validator\";\r\n\r\n/**\r\n * 指定した処理が終わった後に、リソースを解放します。\r\n *\r\n * @template TDisposable 処理が終わった後に、解放するリソースの型を指定します。\r\n * @param resource 処理が終わった後に、解放するリソースを指定します。\r\n */\r\nfunction using(resource: TDisposable): void;\r\n/**\r\n * 指定した処理が終わった後に、リソースを解放します。\r\n *\r\n * @template TDisposable 処理が終わった後に、解放するリソースの型を指定します。\r\n * @template TResult リソースを使用する処理の結果の型を指定します。\r\n * @param resource 処理が終わった後に、解放するリソースを指定します。\r\n * @param func リソースを使用する処理を指定します。\r\n * @returns リソースを使用する処理の結果を返します。\r\n */\r\nfunction using(resource: TDisposable, func: Func1): TResult;\r\nfunction using(resource: TDisposable, func?: Func1): TResult | void {\r\n try {\r\n if (Validator.isNull(func)) {\r\n return;\r\n }\r\n const result = func(resource);\r\n return result;\r\n }\r\n finally {\r\n resource.dispose();\r\n }\r\n}\r\nexport default using;\r\n","import { AsyncDisposable, Func1 } from \"./declarations/types\";\r\n\r\nimport * as Validator from \"./validator\";\r\n\r\n/**\r\n * 指定した非同期処理が終わった後に、リソースを非同期的に解放します。\r\n *\r\n * @template TAsyncDisposable 非同期処理が終わった後に、非同期的に解放するリソースの型を指定します。\r\n * @param resource 非同期処理が終わった後に、非同期的に解放するリソースを指定します。\r\n * @returns 非同期操作を返します。\r\n */\r\nasync function usingAsync(resource: TAsyncDisposable): Promise;\r\n/**\r\n * 指定した非同期処理が終わった後に、リソースを非同期的に解放します。\r\n *\r\n * @template TAsyncDisposable 非同期処理が終わった後に、非同期的に解放するリソースの型を指定します。\r\n * @template TResult リソースを使用する非同期処理の結果の型を指定します。\r\n * @param resource 非同期処理が終わった後に、非同期的に解放するリソースを指定します。\r\n * @param funcAsync リソースを使用する非同期処理を指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nasync function usingAsync(\r\n resource: TAsyncDisposable,\r\n funcAsync: Func1>,\r\n): Promise;\r\nasync function usingAsync(\r\n resource: TAsyncDisposable,\r\n funcAsync?: Func1>,\r\n): Promise {\r\n try {\r\n if (Validator.isNull(funcAsync)) {\r\n return Promise.resolve();\r\n }\r\n const result = await funcAsync(resource);\r\n return result;\r\n }\r\n finally {\r\n await resource.disposeAsync();\r\n }\r\n}\r\nexport default usingAsync;\r\n","/**\r\n * スタイル シートに関連する型定義を提供します。\r\n */\r\n\r\n//#region 型定義\r\n\r\n/**\r\n * スタイル シートの visibility プロパティの値を列挙する型を提供します。\r\n */\r\nexport type Visibility = \"visible\" | \"hidden\" | \"collapse\";\r\nexport namespace Visibility {\r\n /** 表示を表します。 */\r\n export const visible: Visibility = \"visible\";\r\n /** レイアウトに影響しない非表示を表します。 */\r\n export const hidden: Visibility = \"hidden\";\r\n /** レイアウトに影響する非表示を表します。 */\r\n export const collapse: Visibility = \"collapse\";\r\n}\r\n\r\n/**\r\n * スタイル シートの display プロパティの値を列挙する型を提供します。\r\n */\r\nexport type Display =\r\n \"inline\"\r\n | \"block\"\r\n | \"list-item\"\r\n | \"run-in\"\r\n | \"inline-block\"\r\n | \"table\"\r\n | \"inline-table\"\r\n | \"table-row-group\"\r\n | \"table-header-group\"\r\n | \"table-footer-group\"\r\n | \"table-row\"\r\n | \"table-column-group\"\r\n | \"table-column\"\r\n | \"table-cell\"\r\n | \"table-caption\"\r\n | \"none\"\r\n | \"inherit\";\r\nexport namespace Display {\r\n /** インライン ボックスの生成を表します。 */\r\n export const inline: Display = \"inline\";\r\n /** ブロック ボックスの生成を表します。 */\r\n export const block: Display = \"block\";\r\n /** li 要素のようにリスト内容が収められるブロック ボックスと、リスト マーカーのためのマーカー ボックスの生成を表します。 */\r\n export const listItem: Display = \"list-item\";\r\n /** 文脈に応じてブロックまたはインライン ボックスのいずれかの作成を表します。 */\r\n export const runIn: Display = \"run-in\";\r\n /** インライン レベルのブロック コンテナの生成を表します。(要素全体としてはインライン要素のような表示形式であり、内部はブロック ボックスで高さ・横幅などを指定できます) */\r\n export const inlineBlock: Display = \"inline-block\";\r\n /** table 要素のような表示を表します。 */\r\n export const table: Display = \"table\";\r\n /** インライン レベルのテーブルを表します。 */\r\n export const inlineTable: Display = \"inline-table\";\r\n /** tbody 要素のような表示を表します。 */\r\n export const tableRowGroup: Display = \"table-row-group\";\r\n /** thead 要素のような表示を表します。 */\r\n export const tableHeaderGroup: Display = \"table-header-group\";\r\n /** tfoot 要素のような表示を表します。 */\r\n export const tableFooterGroup: Display = \"table-footer-group\";\r\n /** tr 要素のような表示を表します。 */\r\n export const tableRow: Display = \"table-row\";\r\n /** colgroup 要素のような表示を表します。 */\r\n export const tableColumnGroup: Display = \"table-column-group\";\r\n /** col 要素のような表示を表します。 */\r\n export const tableColumn: Display = \"table-column\";\r\n /** td 要素のような表示を表します。 */\r\n export const tableCell: Display = \"table-cell\";\r\n /** caption 要素のような表示を表します。 */\r\n export const tableCaption: Display = \"table-caption\";\r\n /** 要素が表示されず、レイアウトに影響を与えないことを表します。 */\r\n export const none: Display = \"none\";\r\n /** 親要素の値を継承することを表します。 */\r\n export const inherit: Display = \"inherit\";\r\n}\r\n\r\n//#endregion 型定義\r\n","/**\r\n * オブジェクトのインスタンスを生成する機能を提供します。\r\n */\r\nimport { Constructor, Constructor1, Constructor2, Constructor3, Constructor4, Constructor5 } from \"./declarations/types\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * インスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance(ctor: Constructor): TInstance {\r\n return new ctor();\r\n}\r\n\r\n/**\r\n * 引数を指定してインスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance1(ctor: Constructor1, parameter1: T1): TInstance {\r\n return new ctor(parameter1);\r\n}\r\n\r\n/**\r\n * 2 個の引数を指定してインスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance2(ctor: Constructor2, parameter1: T1, parameter2: T2): TInstance {\r\n return new ctor(parameter1, parameter2);\r\n}\r\n\r\n/**\r\n * 3 個の引数を指定してインスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance3(ctor: Constructor3, parameter1: T1, parameter2: T2, parameter3: T3): TInstance {\r\n return new ctor(parameter1, parameter2, parameter3);\r\n}\r\n\r\n/**\r\n * 4 個の引数を指定してインスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n * @template T4 4 番目の引数の型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance4(ctor: Constructor4, parameter1: T1, parameter2: T2, parameter3: T3, parameter4: T4): TInstance {\r\n return new ctor(parameter1, parameter2, parameter3, parameter4);\r\n}\r\n\r\n/**\r\n * 5 個の引数を指定してインスタンスを生成します。\r\n *\r\n * @template TInstance インスタンスの型を指定します。\r\n * @template T1 1 番目の引数の型を指定します。\r\n * @template T2 2 番目の引数の型を指定します。\r\n * @template T3 3 番目の引数の型を指定します。\r\n * @template T4 4 番目の引数の型を指定します。\r\n * @template T5 5 番目の引数の型を指定します。\r\n * @param ctor コンストラクターを指定します。\r\n */\r\nexport function createInstance5(ctor: Constructor5, parameter1: T1, parameter2: T2, parameter3: T3, parameter4: T4, parameter5: T5): TInstance {\r\n return new ctor(parameter1, parameter2, parameter3, parameter4, parameter5);\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * 任意の処理を非同期的に実行する機能を提供します。\r\n */\r\nimport { Action } from \"../declarations/types\";\r\n\r\nimport CancellationToken from \"./cancellation-token\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 指定した処理を任意の間隔で繰り返し実行します。\r\n *\r\n * @param intervalInMilliseconds 実行間隔 (ミリ秒) を指定します。\r\n * @param action 実行する処理を指定します。\r\n * @param isImmediate 指定した処理をすぐに実行する場合は `true` を、それ以外の場合は `false` を指定します。\r\n * @param parameters 実行する処理に渡すパラメーターを指定します。\r\n * @returns 操作を取り消すオブジェクトを返します。\r\n */\r\nexport function beginInterval(\r\n intervalInMilliseconds: number,\r\n action: Action,\r\n cancellationToken = CancellationToken.none,\r\n // tslint:disable-next-line:no-any trailing-comma\r\n ...parameters: any[]\r\n): void {\r\n const intervalId = window.setInterval(action, intervalInMilliseconds, parameters);\r\n cancellationToken.register(() => window.clearInterval(intervalId));\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * `AsyncDisposable` インターフェイスに関連する機能を提供します。\r\n */\r\nimport { AsyncDisposable, Func } from \"../declarations/types\";\r\n\r\n//#region 変数\r\n\r\n/**\r\n * `AsyncDisposable` インターフェイスの空実装を表します。\r\n */\r\nexport const empty: AsyncDisposable = {\r\n disposeAsync: () => Promise.resolve(),\r\n};\r\n\r\n//#endregion 変数\r\n\r\n//#region 関数\r\n\r\n/**\r\n * リソースを非同期的に解放するためのオブジェクトを新規作成します。\r\n *\r\n * @param disposeAsync リソースを非同期的に解放する処理を指定します。\r\n */\r\nexport function create(disposeAsync: Func>): AsyncDisposable {\r\n return { disposeAsync };\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * `Blob` 型をサポートする機能を提供します。\r\n */\r\nimport { Action1, Nullable } from \"../declarations/types\";\r\n\r\nimport * as Promise from \"./promise\";\r\n\r\nimport CancellationToken from \"./cancellation-token\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * `Blob` オブジェクトを、`ArrayBuffer` として非同期的に読み込みます。\r\n *\r\n * @param blob 読み込む `Blob` オブジェクトを指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nexport function readAsArrayBufferAsync(blob: Blob, cancellationToken = CancellationToken.none): Promise> {\r\n return readAsync(new FileReader(), reader => reader.readAsArrayBuffer(blob), cancellationToken);\r\n}\r\n\r\n/**\r\n * `Blob` オブジェクトを、`バイナリ データの文字列形式` として非同期的に読み込みます。\r\n *\r\n * @param blob 読み込む `Blob` オブジェクトを指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nexport function readAsBinaryStringAsync(blob: Blob, cancellationToken = CancellationToken.none): Promise> {\r\n return readAsync(new FileReader(), reader => reader.readAsBinaryString(blob), cancellationToken);\r\n}\r\n\r\n/**\r\n * `Blob` オブジェクトを、ファイルのデータを示す `data: URL` として非同期的に読み込みます。\r\n *\r\n * @param blob 読み込む `Blob` オブジェクトを指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nexport function readAsDataURLAsync(blob: Blob, cancellationToken = CancellationToken.none): Promise> {\r\n return readAsync(new FileReader(), reader => reader.readAsDataURL(blob), cancellationToken);\r\n}\r\n\r\n/**\r\n * `Blob` オブジェクトを、`テキスト文字列` として非同期的に読み込みます。\r\n *\r\n * @param blob 読み込む `Blob` オブジェクトを指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nexport function readAsTextAsync(blob: Blob, cancellationToken = CancellationToken.none): Promise> {\r\n return readAsync(new FileReader(), reader => reader.readAsText(blob), cancellationToken);\r\n}\r\n\r\n/**\r\n * ファイルもしくはバッファー上の生データを非同期的に読み取ります。\r\n *\r\n * @template TResult 読み取り結果の型を指定します。\r\n * @param reader ファイルもしくはバッファー上の生データを読み取るオブジェクトを指定します。\r\n * @param read 読み取り処理を指定します。\r\n * @param cancellationToken 操作を取り消す通知を配信するオブジェクトを指定します。\r\n * @returns 結果を戻す非同期操作を返します。\r\n */\r\nfunction readAsync>(\r\n reader: FileReader,\r\n read: Action1,\r\n cancellationToken = CancellationToken.none,\r\n): Promise {\r\n const result = Promise.create(\r\n (resolve, reject, token) => {\r\n reader.onload = _e => {\r\n Promise.tryReject(resolve, reject, () => reader.result as TResult);\r\n };\r\n reader.onerror = _e => {\r\n reader.abort();\r\n reject(reader.error);\r\n };\r\n read(reader);\r\n token.register(() => reader.abort());\r\n },\r\n cancellationToken,\r\n );\r\n return result;\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * 例外をサポートする機能を提供します。\r\n */\r\n\r\n/**\r\n * `AbortError` かどうかを判定します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns `AbortError` の場合は `true` を、それ以外の場合は `false` を返します。\r\n */\r\n// tslint:disable-next-line: no-any\r\nexport function isAbortError(value: any): value is DOMException {\r\n const result = value instanceof DOMException && value.name === \"AbortError\";\r\n return result;\r\n}\r\n","/**\r\n * HTML 関連の定義を提供します。\r\n */\r\n\r\n//#region 定数\r\n\r\n/** ダブル クォーテーション (\") を表します。 */\r\nexport const quot = \""\";\r\n/** シングル クォーテーション (') を表します。 */\r\nexport const apos = \"'\";\r\n/** アンパサンド (&) を表します。 */\r\nexport const amp = \"&\";\r\n/** 小なり (<) を表します。 */\r\nexport const lt = \"<\";\r\n/** 大なり (<) を表します。 */\r\nexport const gt = \">\";\r\n/** 空白 ( ) を表します。 */\r\nexport const nbsp = \" \";\r\n/** コピーライト (©) を表します。 */\r\nexport const copy = \"©\";\r\n\r\n//#endregion 定数\r\n","/**\r\n * HTTP のメソッドを提供します。\r\n */\r\n\r\n//#region 定数\r\n\r\n/** GET メソッドを表します。 */\r\nexport const get = \"GET\";\r\n/** POST メソッドを表します。 */\r\nexport const post = \"POST\";\r\n/** PUT メソッドを表します。 */\r\nexport const put = \"PUT\";\r\n/** DELETE メソッドを表します。 */\r\nexport const del = \"DELETE\";\r\n/** HEAD メソッドを表します。 */\r\nexport const head = \"HEAD\";\r\n/** OPTIONS メソッドを表します。 */\r\nexport const options = \"OPTIONS\";\r\n/** TRACE メソッドを表します。 */\r\nexport const trace = \"TRACE\";\r\n/** CONNECT メソッドを表します。 */\r\nexport const connect = \"CONNECT\";\r\n\r\n//#endregion 定数\r\n","/**\r\n * 画像、オーディオ、ビデオなどのリッチ メディアに関連する機能を提供します。\r\n */\r\nimport { Action1, Size } from \"./declarations/types\";\r\n\r\nimport * as Validator from \"./validator\";\r\n\r\nimport ArgumentNullOrWhiteSpaceError from \"./errors/argument-null-or-whitespace-error\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 画像のサイズを読み込みます。\r\n *\r\n * @param source 画像ファイルのパスを指定します。\r\n * @param handler サイズを受け取る関数を指定します。\r\n * @throws {ArgumentNullOrWhiteSpaceError} `source` が `null` (未定義) または空白文字の場合に発生します。\r\n */\r\nexport function loadImageSize(source: string, handler: Action1): void {\r\n if (Validator.isNullOrWhitespace(source)) {\r\n throw new ArgumentNullOrWhiteSpaceError(\"source\");\r\n }\r\n const image = new Image();\r\n image.onload = () => {\r\n const size: Size = { width: image.width, height: image.height };\r\n handler(size);\r\n };\r\n image.src = source;\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * 安全ではない機能を提供します。\r\n */\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 変換先の型に変換します。\r\n *\r\n * @template TFrom 変換元の型を指定します。\r\n * @template TTo 変換先の型を指定します。\r\n * @param source 変換元の型の値を指定します。\r\n * @returns 変換先の型の値を返します。\r\n */\r\nexport function As(source: TFrom): TTo {\r\n // tslint:disable-next-line: no-any\r\n return source as any as TTo;\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * URI に関連する機能を提供します。\r\n */\r\nimport { Nullable, StringDictionary } from \"./declarations/types\";\r\n\r\nimport * as Core from \"./core\";\r\nimport * as String from \"./string\";\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * オブジェクトの情報をクエリ情報に変換します。\r\n *\r\n * @param source 処理対象の値を指定します。\r\n * @returns クエリ情報を返します。\r\n */\r\nexport function toQuery(source: Nullable): string {\r\n if (Validator.isNull(source)) {\r\n return String.empty;\r\n }\r\n const dictionary = source as StringDictionary;\r\n const entries: string[] = [];\r\n Object.getOwnPropertyNames(source).forEach(name => {\r\n const entry = encodeURIComponent(name) + \"=\" + encodeURIComponent(Core.elvis(dictionary[name], String.empty));\r\n entries.push(entry);\r\n });\r\n const result = entries.join(\"&\");\r\n return result;\r\n}\r\n\r\n/**\r\n * URL のクエリ情報をオブジェクトに変換します。\r\n *\r\n * @template TResult 戻り値の型を指定します。\r\n * @param source 処理対象の値を指定します。\r\n * @returns クエリ情報を返します。\r\n */\r\nexport function fromQuery(source: Nullable): TResult {\r\n const result: StringDictionary = {};\r\n if (Validator.isNullOrWhitespace(source)) {\r\n return result as TResult;\r\n }\r\n const parts = decodeURIComponent(source).split(\"?\");\r\n const query = parts[parts.length - 1];\r\n if (Validator.isNullOrWhitespace(query)) {\r\n return result as TResult;\r\n }\r\n query.split(\"&\").forEach(item => {\r\n const keyValue = item.split(\"=\");\r\n const key = keyValue[0];\r\n if (Validator.isNullOrWhitespace(key)) {\r\n return;\r\n }\r\n const value = keyValue[1];\r\n result[key] = value;\r\n });\r\n return result as TResult;\r\n}\r\n\r\n//#endregion 関数\r\n","/**\r\n * ウィンドウを新規に開くときのオプション情報を編集する機能を提供します。\r\n */\r\nimport { Elvis, Nullable, Point, WindowFeature, WindowLocation } from \"./declarations/types\";\r\n\r\nimport * as Core from \"./core\";\r\nimport * as Invoker from \"./invoker\";\r\nimport * as String from \"./string\";\r\nimport * as Validator from \"./validator\";\r\n\r\n//#region 関数\r\n\r\n/**\r\n * 新しい Window を開きます。\r\n *\r\n * @param url URL を指定します。\r\n * @param query クエリ文字列を指定します。\r\n * @param target 新しいウィンドウの名称を指定します。\r\n * @param feature ウィンドウのオプション情報を指定します。\r\n * @returns 新しい Window を返します。\r\n */\r\nexport function openWindow(url: string, query?: string, target?: string, feature?: WindowFeature): Nullable {\r\n const windowUrl = Validator.isNullOrWhitespace(url)\r\n ? String.empty\r\n : Validator.isNullOrWhitespace(query) ? url : `${url}?${query}`;\r\n const windowTarget = Core.elvis(target, \"_blank\", Elvis.WithWhitespace);\r\n const windowFeatures = toString(feature);\r\n return window.open(windowUrl, windowTarget, windowFeatures);\r\n}\r\n\r\n/**\r\n * ウィンドウを新規に開くときのオプション情報を文字列に変換します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\nfunction toString(value: Nullable): string {\r\n if (Validator.isNull(value)) {\r\n return String.empty;\r\n }\r\n const features: string[] = [];\r\n Invoker.run(() => {\r\n if (Validator.isNull(value.location)) {\r\n return;\r\n }\r\n const pushX = (x: number) => {\r\n if (Validator.isNull(x) || isNaN(x)) {\r\n return;\r\n }\r\n features.push(`screenX=${x}`, `left=${x}`);\r\n };\r\n const pushY = (y: number) => {\r\n if (Validator.isNull(y) || isNaN(y)) {\r\n return;\r\n }\r\n features.push(`screenY=${y}`, `top=${y}`);\r\n };\r\n switch (value.location) {\r\n case WindowLocation.CenterScreen:\r\n if (Validator.isNull(value.size)) {\r\n return;\r\n }\r\n pushX((screen.width - value.size.width) / 2);\r\n pushY((screen.height - value.size.height) / 2);\r\n return;\r\n }\r\n const point = value.location as Point;\r\n pushX(point.x);\r\n pushY(point.y);\r\n });\r\n Invoker.run(() => {\r\n if (Validator.isNull(value.size)) {\r\n return;\r\n }\r\n const width = value.size.width;\r\n if (Validator.isNull(width) === false) {\r\n features.push(`width=${width}`);\r\n }\r\n const height = value.size.height;\r\n if (Validator.isNull(height) === false) {\r\n features.push(`height=${height}`);\r\n }\r\n });\r\n const menubar = Validator.isNull(value.isMenubar) ? null : toYesNo(value.isMenubar);\r\n if (Validator.isNullOrWhitespace(menubar) === false) {\r\n features.push(`menubar=${menubar}`);\r\n }\r\n const toolbar = Validator.isNull(value.isToolbar) ? null : toYesNo(value.isToolbar);\r\n if (Validator.isNullOrWhitespace(toolbar) === false) {\r\n features.push(`toolbar=${toolbar}`);\r\n }\r\n const location = Validator.isNull(value.isLocation) ? null : toYesNo(value.isLocation);\r\n if (Validator.isNullOrWhitespace(location) === false) {\r\n features.push(`location=${location}`);\r\n }\r\n const status = Validator.isNull(value.isStatus) ? null : toYesNo(value.isStatus);\r\n if (Validator.isNullOrWhitespace(status) === false) {\r\n features.push(`status=${status}`);\r\n }\r\n const resizable = Validator.isNull(value.isResizable) ? null : toYesNo(value.isResizable);\r\n if (Validator.isNullOrWhitespace(resizable) === false) {\r\n features.push(`resizable=${resizable}`);\r\n }\r\n const scrollbars = Validator.isNull(value.isScrollbars) ? null : toYesNo(value.isScrollbars);\r\n if (Validator.isNullOrWhitespace(scrollbars) === false) {\r\n features.push(`scrollbars=${scrollbars}`);\r\n }\r\n const directories = Validator.isNull(value.isDirectories) ? null : toYesNo(value.isDirectories);\r\n if (Validator.isNullOrWhitespace(directories) === false) {\r\n features.push(`directories=${directories}`);\r\n }\r\n const result = features.join(\",\");\r\n return result;\r\n}\r\n\r\n/**\r\n * 真偽値を文字列 (yes/no) に変換します。\r\n *\r\n * @param value 値を指定します。\r\n * @returns 処理結果を返します。\r\n */\r\nfunction toYesNo(value: boolean): string {\r\n return value ? \"yes\" : \"no\";\r\n}\r\n\r\n//#endregion 関数\r\n"],"sourceRoot":""}