@ -1,3 +0,0 @@
|
||||
## Creating a Settings Tab
|
||||
|
||||
TODO...
|
@ -1,3 +1,294 @@
|
||||
## 配置状态
|
||||
|
||||
TODO...
|
||||
`ConfigStateService` 是一个单例服务,即在应用程序的根级别提供,用于与 `Store` 中的应用程序配置状态进行交互.
|
||||
|
||||
## 使用前
|
||||
|
||||
为了使用 `ConfigStateService`,你必须将其注入到你的类中.
|
||||
|
||||
```js
|
||||
import { ConfigStateService } from '@abp/ng.core';
|
||||
|
||||
@Component({
|
||||
/* class metadata here */
|
||||
})
|
||||
class DemoComponent {
|
||||
constructor(private config: ConfigStateService) {}
|
||||
}
|
||||
```
|
||||
|
||||
你不必在模块或组件/指令级别提供 `ConfigStateService`,因为它已经在**根中**提供.
|
||||
|
||||
## 选择器方法
|
||||
|
||||
`ConfigStateService` 有许多选择器方法允许你从 `Store` 获取特定或所有的配置.
|
||||
|
||||
### 如何从Store获取所有的配置
|
||||
|
||||
你可以使用 `ConfigStateService` 的 `getAll` 方法从Store获取所有的配置对象. 用法如下:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const config = this.config.getAll();
|
||||
```
|
||||
|
||||
### 如何从Store获取特定的配置
|
||||
|
||||
你可以使用 `ConfigStateService` 的 `getOne` 方法从Store获取特定的配置属性. 你需要将属性名做为参数传递给方法:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const currentUser = this.config.getOne("currentUser");
|
||||
```
|
||||
|
||||
有时你想要获取具体信息,而不是当前用户. 例如你只想获取到 `tenantId`:
|
||||
|
||||
```js
|
||||
const tenantId = this.config.getDeep("currentUser.tenantId");
|
||||
```
|
||||
|
||||
或通过提供键数组作为参数:
|
||||
|
||||
```js
|
||||
const tenantId = this.config.getDeep(["currentUser", "tenantId"]);
|
||||
```
|
||||
|
||||
`getDeep` 可以执行 `getOne` 的所有操作. 但 `getOne` 的执行效率要高一些.
|
||||
|
||||
#### 配置状态属性
|
||||
|
||||
请参阅 `Config.State` 类型,你可以通过 `getOne` 和 `getDeep` 获取所有属性. 你可以在[config.ts 文件](https://github.com/abpframework/abp/blob/dev/npm/ng-packs/packages/core/src/lib/models/config.ts#L7)中找到.
|
||||
|
||||
### 如何从Store获取应用程序信息
|
||||
|
||||
`getApplicationInfo` 方法从存储为配置状态存储的环境变量中获取应用程序信息. 你可以这样使用它:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const appInfo = this.config.getApplicationInfo();
|
||||
```
|
||||
|
||||
该方法不会返回 `undefined` 或 `null`,而是会返回一个空对象(`{}`). 换句话说,当你使用上面代码中的 `appInfo` 属性时,永远不会出现错误.
|
||||
|
||||
#### 应用程序信息属性
|
||||
|
||||
请参阅 `Config.State` 类型,你可以通过 `getApplicationInfo` 获取所有属性. 你可以在[config.ts 文件](https://github.com/abpframework/abp/blob/dev/npm/ng-packs/packages/core/src/lib/models/config.ts#L21)中找到.
|
||||
|
||||
### 如何从Store获取
|
||||
|
||||
`getApplicationInfo` 方法从存储为配置状态存储的环境变量中获取特定的API URL. 你可以这样使用它:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const apiUrl = this.config.getApiUrl();
|
||||
// environment.apis.default.url
|
||||
|
||||
const searchUrl = this.config.getApiUrl("search");
|
||||
// environment.apis.search.url
|
||||
```
|
||||
|
||||
该方法返回给定键的特定的API `url`. 如果没有Key,则使用 `default`.
|
||||
|
||||
### 如何从Store获取所有的设置
|
||||
|
||||
你可以使用 `ConfigStateService` 的 `getSettings` 获取配置状态所有的设置对象. 你可以这样使用它:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const settings = this.config.getSettings();
|
||||
```
|
||||
|
||||
实际上该方法可以通过**传递关键字**来搜索设置.
|
||||
|
||||
```js
|
||||
const localizationSettings = this.config.getSettings("Localization");
|
||||
/*
|
||||
{
|
||||
'Abp.Localization.DefaultLanguage': 'en'
|
||||
}
|
||||
*/
|
||||
```
|
||||
|
||||
请注意, **设置搜索区分大小写**.
|
||||
|
||||
### 如何从Store获取特定的设置
|
||||
|
||||
你可以使用 `ConfigStateService` 的 `getSetting` 获取配置状态特定的设置. 你可以这样使用它:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const defaultLang = this.config.getSetting("Abp.Localization.DefaultLanguage");
|
||||
// 'en'
|
||||
```
|
||||
|
||||
### 如何从Store获取特定的权限
|
||||
|
||||
你可以使用 `ConfigStateService` 的 `getGrantedPolicy` 获取配置状态特定的权限. 你应该将策略key做为参数传递给方法:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const hasIdentityPermission = this.config.getGrantedPolicy("Abp.Identity");
|
||||
// true
|
||||
```
|
||||
|
||||
你还可以使用 **组合策略key** 来微调你的选择:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const hasIdentityAndAccountPermission = this.config.getGrantedPolicy(
|
||||
"Abp.Identity && Abp.Account"
|
||||
);
|
||||
// false
|
||||
|
||||
const hasIdentityOrAccountPermission = this.config.getGrantedPolicy(
|
||||
"Abp.Identity || Abp.Account"
|
||||
);
|
||||
// true
|
||||
```
|
||||
|
||||
创建权限选择器时,请考虑以下**规则**:
|
||||
|
||||
- 最多可组合两个键.
|
||||
- `&&` 操作符查找两个键.
|
||||
- `||` 操作符查找任意一个键.
|
||||
- 空字符串 `''` 做为键将返回 `true`
|
||||
- 使用没有第二个键的操作符将返回 `false`
|
||||
|
||||
### 如何从Store中获取翻译
|
||||
|
||||
`ConfigStateService` 的 `getLocalization` 用法翻译. 这里有一些示例:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const identity = this.config.getLocalization("AbpIdentity::Identity");
|
||||
// 'identity'
|
||||
|
||||
const notFound = this.config.getLocalization("AbpIdentity::IDENTITY");
|
||||
// 'AbpIdentity::IDENTITY'
|
||||
|
||||
const defaultValue = this.config.getLocalization({
|
||||
key: "AbpIdentity::IDENTITY",
|
||||
defaultValue: "IDENTITY"
|
||||
});
|
||||
// 'IDENTITY'
|
||||
```
|
||||
|
||||
请参阅[本地化文档](./Localization.md)了解详情.
|
||||
|
||||
## 分发方法
|
||||
|
||||
`ConfigStateService` 有几种分发方法,让你方便地将预定义操作分发到 `Store`.
|
||||
|
||||
### 如何从服务器获取应用程序配置
|
||||
|
||||
`dispatchGetAppConfiguration` 触发对端点的请求,该端点使用应用程序状态进行响应,然后将此响应作为配置状态放置到 `Store`中.
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
this.config.dispatchGetAppConfiguration();
|
||||
// returns a state stream which emits after dispatch action is complete
|
||||
```
|
||||
|
||||
请注意,**你不必在应用程序启动时调用此方法**,因为在启动时已经从服务器收到了应用程序配置.
|
||||
|
||||
### 如何修补路由配置
|
||||
|
||||
`dispatchPatchRouteByName` 根据名称查找路由, 并将其在 `Store` 中的配置替换为作为第二个参数传递的新配置.
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const newRouteConfig: Partial<ABP.Route> = {
|
||||
name: "Home",
|
||||
path: "home",
|
||||
children: [
|
||||
{
|
||||
name: "Dashboard",
|
||||
path: "dashboard"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
this.config.dispatchPatchRouteByName("::Menu:Home", newRouteConfig);
|
||||
// returns a state stream which emits after dispatch action is complete
|
||||
```
|
||||
|
||||
### 如何添加新路由配置
|
||||
|
||||
`dispatchAddRoute` 向 `Store` 的配置状态添加一个新路由. 应该将路由配置做为方法参数传递.
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const newRoute: ABP.Route = {
|
||||
name: "My New Page",
|
||||
iconClass: "fa fa-dashboard",
|
||||
path: "page",
|
||||
invisible: false,
|
||||
order: 2,
|
||||
requiredPolicy: "MyProjectName::MyNewPage"
|
||||
};
|
||||
|
||||
this.config.dispatchAddRoute(newRoute);
|
||||
// returns a state stream which emits after dispatch action is complete
|
||||
```
|
||||
|
||||
`newRoute` 将被放置在根级别,没有任何父路由,并且其url将存储为 `'/path'`.
|
||||
|
||||
如果你想要**添加一个子路由,您可以这样做:**
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
const newRoute: ABP.Route = {
|
||||
parentName: "AbpAccount::Login",
|
||||
name: "My New Page",
|
||||
iconClass: "fa fa-dashboard",
|
||||
path: "page",
|
||||
invisible: false,
|
||||
order: 2,
|
||||
requiredPolicy: "MyProjectName::MyNewPage"
|
||||
};
|
||||
|
||||
this.config.dispatchAddRoute(newRoute);
|
||||
// returns a state stream which emits after dispatch action is complete
|
||||
```
|
||||
|
||||
`newRoute` 做为 `'AbpAccount::Login'` 父路由的子路由被放置,它的url被设置为 `'/account/login/page'`.
|
||||
|
||||
#### 路由配置属性
|
||||
|
||||
请参阅 `ABP.Route` 类型,获取可在参数中传递给 `dispatchSetEnvironment` 的所有属性. 你可以在[common.ts 文件](https://github.com/abpframework/abp/blob/dev/npm/ng-packs/packages/core/src/lib/models/common.ts#L27)中找到.
|
||||
|
||||
### 如何设置环境
|
||||
|
||||
`dispatchSetEnvironment` 将传递给它的环境变量放在 `Store` 中的配置状态下. 使用方法如下:
|
||||
|
||||
```js
|
||||
// this.config is instance of ConfigStateService
|
||||
|
||||
this.config.dispatchSetEnvironment({
|
||||
/* environment properties here */
|
||||
});
|
||||
// returns a state stream which emits after dispatch action is complete
|
||||
```
|
||||
|
||||
注意,**你不必在应用程序启动时调用此方法**,因为环境变量已经在启动时存储了.
|
||||
|
||||
#### 环境属性
|
||||
|
||||
请参阅 `Config.Environment` 类型,获取可在参数中传递给 `dispatchSetEnvironment` 的所有属性. 你可以在[config.ts 文件](https://github.com/abpframework/abp/blob/dev/npm/ng-packs/packages/core/src/lib/models/config.ts#L13)中找到.
|
||||
|
||||
## 下一步是什么?
|
||||
|
||||
* [组件替换]](./Component-Replacement.md)
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 357 KiB |
After Width: | Height: | Size: 424 KiB |
After Width: | Height: | Size: 401 KiB |
After Width: | Height: | Size: 336 KiB |
After Width: | Height: | Size: 389 KiB |
@ -0,0 +1,600 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('just-compare')) :
|
||||
typeof define === 'function' && define.amd ? define('@abp/utils', ['exports', 'just-compare'], factory) :
|
||||
(global = global || self, factory((global.abp = global.abp || {}, global.abp.utils = global.abp.utils || {}, global.abp.utils.common = {}), global.compare));
|
||||
}(this, (function (exports, compare) { 'use strict';
|
||||
|
||||
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
function __rest(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||
t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||||
t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
function __decorate(decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
}
|
||||
|
||||
function __param(paramIndex, decorator) {
|
||||
return function (target, key) { decorator(target, key, paramIndex); }
|
||||
}
|
||||
|
||||
function __metadata(metadataKey, metadataValue) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
function __exportStar(m, exports) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
|
||||
function __values(o) {
|
||||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||||
if (m) return m.call(o);
|
||||
if (o && typeof o.length === "number") return {
|
||||
next: function () {
|
||||
if (o && i >= o.length) o = void 0;
|
||||
return { value: o && o[i++], done: !o };
|
||||
}
|
||||
};
|
||||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||||
}
|
||||
|
||||
function __read(o, n) {
|
||||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||||
if (!m) return o;
|
||||
var i = m.call(o), r, ar = [], e;
|
||||
try {
|
||||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||||
}
|
||||
catch (error) { e = { error: error }; }
|
||||
finally {
|
||||
try {
|
||||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||||
}
|
||||
finally { if (e) throw e.error; }
|
||||
}
|
||||
return ar;
|
||||
}
|
||||
|
||||
function __spread() {
|
||||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||||
ar = ar.concat(__read(arguments[i]));
|
||||
return ar;
|
||||
}
|
||||
|
||||
function __spreadArrays() {
|
||||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||||
r[k] = a[j];
|
||||
return r;
|
||||
};
|
||||
|
||||
function __await(v) {
|
||||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||||
}
|
||||
|
||||
function __asyncGenerator(thisArg, _arguments, generator) {
|
||||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||||
function fulfill(value) { resume("next", value); }
|
||||
function reject(value) { resume("throw", value); }
|
||||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||||
}
|
||||
|
||||
function __asyncDelegator(o) {
|
||||
var i, p;
|
||||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||||
}
|
||||
|
||||
function __asyncValues(o) {
|
||||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||||
var m = o[Symbol.asyncIterator], i;
|
||||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||||
}
|
||||
|
||||
function __makeTemplateObject(cooked, raw) {
|
||||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||||
return cooked;
|
||||
};
|
||||
|
||||
function __importStar(mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result.default = mod;
|
||||
return result;
|
||||
}
|
||||
|
||||
function __importDefault(mod) {
|
||||
return (mod && mod.__esModule) ? mod : { default: mod };
|
||||
}
|
||||
|
||||
function __classPrivateFieldGet(receiver, privateMap) {
|
||||
if (!privateMap.has(receiver)) {
|
||||
throw new TypeError("attempted to get private field on non-instance");
|
||||
}
|
||||
return privateMap.get(receiver);
|
||||
}
|
||||
|
||||
function __classPrivateFieldSet(receiver, privateMap, value) {
|
||||
if (!privateMap.has(receiver)) {
|
||||
throw new TypeError("attempted to set private field on non-instance");
|
||||
}
|
||||
privateMap.set(receiver, value);
|
||||
return value;
|
||||
}
|
||||
|
||||
/* tslint:disable:no-non-null-assertion */
|
||||
var ListNode = /** @class */ (function () {
|
||||
function ListNode(value) {
|
||||
this.value = value;
|
||||
}
|
||||
return ListNode;
|
||||
}());
|
||||
var LinkedList = /** @class */ (function () {
|
||||
function LinkedList() {
|
||||
this.size = 0;
|
||||
}
|
||||
Object.defineProperty(LinkedList.prototype, "head", {
|
||||
get: function () {
|
||||
return this.first;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(LinkedList.prototype, "tail", {
|
||||
get: function () {
|
||||
return this.last;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(LinkedList.prototype, "length", {
|
||||
get: function () {
|
||||
return this.size;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
|
||||
if (!previousNode)
|
||||
return this.addHead(value);
|
||||
if (!nextNode)
|
||||
return this.addTail(value);
|
||||
var node = new ListNode(value);
|
||||
node.previous = previousNode;
|
||||
previousNode.next = node;
|
||||
node.next = nextNode;
|
||||
nextNode.previous = node;
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.attachMany = function (values, previousNode, nextNode) {
|
||||
if (!values.length)
|
||||
return [];
|
||||
if (!previousNode)
|
||||
return this.addManyHead(values);
|
||||
if (!nextNode)
|
||||
return this.addManyTail(values);
|
||||
var list = new LinkedList();
|
||||
list.addManyTail(values);
|
||||
list.first.previous = previousNode;
|
||||
previousNode.next = list.first;
|
||||
list.last.next = nextNode;
|
||||
nextNode.previous = list.last;
|
||||
this.size += values.length;
|
||||
return list.toNodeArray();
|
||||
};
|
||||
LinkedList.prototype.detach = function (node) {
|
||||
if (!node.previous)
|
||||
return this.dropHead();
|
||||
if (!node.next)
|
||||
return this.dropTail();
|
||||
node.previous.next = node.next;
|
||||
node.next.previous = node.previous;
|
||||
this.size--;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.add = function (value) {
|
||||
var _this = this;
|
||||
return {
|
||||
after: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params));
|
||||
},
|
||||
before: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params));
|
||||
},
|
||||
byIndex: function (position) { return _this.addByIndex(value, position); },
|
||||
head: function () { return _this.addHead(value); },
|
||||
tail: function () { return _this.addTail(value); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.addMany = function (values) {
|
||||
var _this = this;
|
||||
return {
|
||||
after: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params));
|
||||
},
|
||||
before: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params));
|
||||
},
|
||||
byIndex: function (position) { return _this.addManyByIndex(values, position); },
|
||||
head: function () { return _this.addManyHead(values); },
|
||||
tail: function () { return _this.addManyTail(values); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.addAfter = function (value, previousValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
|
||||
return previous ? this.attach(value, previous, previous.next) : this.addTail(value);
|
||||
};
|
||||
LinkedList.prototype.addBefore = function (value, nextValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var next = this.find(function (node) { return compareFn(node.value, nextValue); });
|
||||
return next ? this.attach(value, next.previous, next) : this.addHead(value);
|
||||
};
|
||||
LinkedList.prototype.addByIndex = function (value, position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
else if (position >= this.size)
|
||||
return this.addTail(value);
|
||||
if (position <= 0)
|
||||
return this.addHead(value);
|
||||
var next = this.get(position);
|
||||
return this.attach(value, next.previous, next);
|
||||
};
|
||||
LinkedList.prototype.addHead = function (value) {
|
||||
var node = new ListNode(value);
|
||||
node.next = this.first;
|
||||
if (this.first)
|
||||
this.first.previous = node;
|
||||
else
|
||||
this.last = node;
|
||||
this.first = node;
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.addTail = function (value) {
|
||||
var node = new ListNode(value);
|
||||
if (this.first) {
|
||||
node.previous = this.last;
|
||||
this.last.next = node;
|
||||
this.last = node;
|
||||
}
|
||||
else {
|
||||
this.first = node;
|
||||
this.last = node;
|
||||
}
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
|
||||
return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);
|
||||
};
|
||||
LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var next = this.find(function (node) { return compareFn(node.value, nextValue); });
|
||||
return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);
|
||||
};
|
||||
LinkedList.prototype.addManyByIndex = function (values, position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
if (position <= 0)
|
||||
return this.addManyHead(values);
|
||||
if (position >= this.size)
|
||||
return this.addManyTail(values);
|
||||
var next = this.get(position);
|
||||
return this.attachMany(values, next.previous, next);
|
||||
};
|
||||
LinkedList.prototype.addManyHead = function (values) {
|
||||
var _this = this;
|
||||
return values.reduceRight(function (nodes, value) {
|
||||
nodes.unshift(_this.addHead(value));
|
||||
return nodes;
|
||||
}, []);
|
||||
};
|
||||
LinkedList.prototype.addManyTail = function (values) {
|
||||
var _this = this;
|
||||
return values.map(function (value) { return _this.addTail(value); });
|
||||
};
|
||||
LinkedList.prototype.drop = function () {
|
||||
var _this = this;
|
||||
return {
|
||||
byIndex: function (position) { return _this.dropByIndex(position); },
|
||||
byValue: function () {
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return _this.dropByValue.apply(_this, params);
|
||||
},
|
||||
byValueAll: function () {
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return _this.dropByValueAll.apply(_this, params);
|
||||
},
|
||||
head: function () { return _this.dropHead(); },
|
||||
tail: function () { return _this.dropTail(); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.dropMany = function (count) {
|
||||
var _this = this;
|
||||
return {
|
||||
byIndex: function (position) { return _this.dropManyByIndex(count, position); },
|
||||
head: function () { return _this.dropManyHead(count); },
|
||||
tail: function () { return _this.dropManyTail(count); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.dropByIndex = function (position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
var current = this.get(position);
|
||||
return current ? this.detach(current) : undefined;
|
||||
};
|
||||
LinkedList.prototype.dropByValue = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var position = this.findIndex(function (node) { return compareFn(node.value, value); });
|
||||
return position < 0 ? undefined : this.dropByIndex(position);
|
||||
};
|
||||
LinkedList.prototype.dropByValueAll = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var dropped = [];
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (compareFn(current.value, value)) {
|
||||
dropped.push(this.dropByIndex(position - dropped.length));
|
||||
}
|
||||
}
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropHead = function () {
|
||||
var head = this.first;
|
||||
if (head) {
|
||||
this.first = head.next;
|
||||
if (this.first)
|
||||
this.first.previous = undefined;
|
||||
else
|
||||
this.last = undefined;
|
||||
this.size--;
|
||||
return head;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.dropTail = function () {
|
||||
var tail = this.last;
|
||||
if (tail) {
|
||||
this.last = tail.previous;
|
||||
if (this.last)
|
||||
this.last.next = undefined;
|
||||
else
|
||||
this.first = undefined;
|
||||
this.size--;
|
||||
return tail;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.dropManyByIndex = function (count, position) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
if (position < 0)
|
||||
position = Math.max(position + this.size, 0);
|
||||
else if (position >= this.size)
|
||||
return [];
|
||||
count = Math.min(count, this.size - position);
|
||||
var dropped = [];
|
||||
while (count--) {
|
||||
var current = this.get(position);
|
||||
dropped.push(this.detach(current));
|
||||
}
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropManyHead = function (count) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
count = Math.min(count, this.size);
|
||||
var dropped = [];
|
||||
while (count--)
|
||||
dropped.unshift(this.dropHead());
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropManyTail = function (count) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
count = Math.min(count, this.size);
|
||||
var dropped = [];
|
||||
while (count--)
|
||||
dropped.push(this.dropTail());
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.find = function (predicate) {
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (predicate(current, position, this))
|
||||
return current;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.findIndex = function (predicate) {
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (predicate(current, position, this))
|
||||
return position;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
LinkedList.prototype.forEach = function (callback) {
|
||||
for (var node = this.first, position = 0; node; position++, node = node.next) {
|
||||
callback(node, position, this);
|
||||
}
|
||||
};
|
||||
LinkedList.prototype.get = function (position) {
|
||||
return this.find(function (_, index) { return position === index; });
|
||||
};
|
||||
LinkedList.prototype.indexOf = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
return this.findIndex(function (node) { return compareFn(node.value, value); });
|
||||
};
|
||||
LinkedList.prototype.toArray = function () {
|
||||
var array = new Array(this.size);
|
||||
this.forEach(function (node, index) { return (array[index] = node.value); });
|
||||
return array;
|
||||
};
|
||||
LinkedList.prototype.toNodeArray = function () {
|
||||
var array = new Array(this.size);
|
||||
this.forEach(function (node, index) { return (array[index] = node); });
|
||||
return array;
|
||||
};
|
||||
LinkedList.prototype.toString = function (mapperFn) {
|
||||
if (mapperFn === void 0) { mapperFn = JSON.stringify; }
|
||||
return this.toArray()
|
||||
.map(function (value) { return mapperFn(value); })
|
||||
.join(' <-> ');
|
||||
};
|
||||
// Cannot use Generator type because of ng-packagr
|
||||
LinkedList.prototype[Symbol.iterator] = function () {
|
||||
var node, position;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
node = this.first, position = 0;
|
||||
_a.label = 1;
|
||||
case 1:
|
||||
if (!node) return [3 /*break*/, 4];
|
||||
return [4 /*yield*/, node.value];
|
||||
case 2:
|
||||
_a.sent();
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
position++, node = node.next;
|
||||
return [3 /*break*/, 1];
|
||||
case 4: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
};
|
||||
return LinkedList;
|
||||
}());
|
||||
|
||||
exports.LinkedList = LinkedList;
|
||||
exports.ListNode = ListNode;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
//# sourceMappingURL=abp-utils.umd.js.map
|
@ -0,0 +1,600 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('just-compare')) :
|
||||
typeof define === 'function' && define.amd ? define('@abp/utils', ['exports', 'just-compare'], factory) :
|
||||
(global = global || self, factory((global.abp = global.abp || {}, global.abp.utils = global.abp.utils || {}, global.abp.utils.common = {}), global.compare));
|
||||
}(this, (function (exports, compare) { 'use strict';
|
||||
|
||||
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
function __rest(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||
t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||||
t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
function __decorate(decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
}
|
||||
|
||||
function __param(paramIndex, decorator) {
|
||||
return function (target, key) { decorator(target, key, paramIndex); }
|
||||
}
|
||||
|
||||
function __metadata(metadataKey, metadataValue) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
||||
}
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
function __generator(thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (_) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
}
|
||||
|
||||
function __exportStar(m, exports) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
|
||||
function __values(o) {
|
||||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||||
if (m) return m.call(o);
|
||||
if (o && typeof o.length === "number") return {
|
||||
next: function () {
|
||||
if (o && i >= o.length) o = void 0;
|
||||
return { value: o && o[i++], done: !o };
|
||||
}
|
||||
};
|
||||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||||
}
|
||||
|
||||
function __read(o, n) {
|
||||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||||
if (!m) return o;
|
||||
var i = m.call(o), r, ar = [], e;
|
||||
try {
|
||||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
||||
}
|
||||
catch (error) { e = { error: error }; }
|
||||
finally {
|
||||
try {
|
||||
if (r && !r.done && (m = i["return"])) m.call(i);
|
||||
}
|
||||
finally { if (e) throw e.error; }
|
||||
}
|
||||
return ar;
|
||||
}
|
||||
|
||||
function __spread() {
|
||||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||||
ar = ar.concat(__read(arguments[i]));
|
||||
return ar;
|
||||
}
|
||||
|
||||
function __spreadArrays() {
|
||||
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||||
r[k] = a[j];
|
||||
return r;
|
||||
};
|
||||
|
||||
function __await(v) {
|
||||
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
||||
}
|
||||
|
||||
function __asyncGenerator(thisArg, _arguments, generator) {
|
||||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
||||
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
||||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
||||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
||||
function fulfill(value) { resume("next", value); }
|
||||
function reject(value) { resume("throw", value); }
|
||||
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
||||
}
|
||||
|
||||
function __asyncDelegator(o) {
|
||||
var i, p;
|
||||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
||||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
||||
}
|
||||
|
||||
function __asyncValues(o) {
|
||||
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
||||
var m = o[Symbol.asyncIterator], i;
|
||||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
||||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
||||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
||||
}
|
||||
|
||||
function __makeTemplateObject(cooked, raw) {
|
||||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
||||
return cooked;
|
||||
};
|
||||
|
||||
function __importStar(mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result.default = mod;
|
||||
return result;
|
||||
}
|
||||
|
||||
function __importDefault(mod) {
|
||||
return (mod && mod.__esModule) ? mod : { default: mod };
|
||||
}
|
||||
|
||||
function __classPrivateFieldGet(receiver, privateMap) {
|
||||
if (!privateMap.has(receiver)) {
|
||||
throw new TypeError("attempted to get private field on non-instance");
|
||||
}
|
||||
return privateMap.get(receiver);
|
||||
}
|
||||
|
||||
function __classPrivateFieldSet(receiver, privateMap, value) {
|
||||
if (!privateMap.has(receiver)) {
|
||||
throw new TypeError("attempted to set private field on non-instance");
|
||||
}
|
||||
privateMap.set(receiver, value);
|
||||
return value;
|
||||
}
|
||||
|
||||
/* tslint:disable:no-non-null-assertion */
|
||||
var ListNode = /** @class */ (function () {
|
||||
function ListNode(value) {
|
||||
this.value = value;
|
||||
}
|
||||
return ListNode;
|
||||
}());
|
||||
var LinkedList = /** @class */ (function () {
|
||||
function LinkedList() {
|
||||
this.size = 0;
|
||||
}
|
||||
Object.defineProperty(LinkedList.prototype, "head", {
|
||||
get: function () {
|
||||
return this.first;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(LinkedList.prototype, "tail", {
|
||||
get: function () {
|
||||
return this.last;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(LinkedList.prototype, "length", {
|
||||
get: function () {
|
||||
return this.size;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
|
||||
if (!previousNode)
|
||||
return this.addHead(value);
|
||||
if (!nextNode)
|
||||
return this.addTail(value);
|
||||
var node = new ListNode(value);
|
||||
node.previous = previousNode;
|
||||
previousNode.next = node;
|
||||
node.next = nextNode;
|
||||
nextNode.previous = node;
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.attachMany = function (values, previousNode, nextNode) {
|
||||
if (!values.length)
|
||||
return [];
|
||||
if (!previousNode)
|
||||
return this.addManyHead(values);
|
||||
if (!nextNode)
|
||||
return this.addManyTail(values);
|
||||
var list = new LinkedList();
|
||||
list.addManyTail(values);
|
||||
list.first.previous = previousNode;
|
||||
previousNode.next = list.first;
|
||||
list.last.next = nextNode;
|
||||
nextNode.previous = list.last;
|
||||
this.size += values.length;
|
||||
return list.toNodeArray();
|
||||
};
|
||||
LinkedList.prototype.detach = function (node) {
|
||||
if (!node.previous)
|
||||
return this.dropHead();
|
||||
if (!node.next)
|
||||
return this.dropTail();
|
||||
node.previous.next = node.next;
|
||||
node.next.previous = node.previous;
|
||||
this.size--;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.add = function (value) {
|
||||
var _this = this;
|
||||
return {
|
||||
after: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params));
|
||||
},
|
||||
before: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params));
|
||||
},
|
||||
byIndex: function (position) { return _this.addByIndex(value, position); },
|
||||
head: function () { return _this.addHead(value); },
|
||||
tail: function () { return _this.addTail(value); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.addMany = function (values) {
|
||||
var _this = this;
|
||||
return {
|
||||
after: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params));
|
||||
},
|
||||
before: function () {
|
||||
var _a;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params));
|
||||
},
|
||||
byIndex: function (position) { return _this.addManyByIndex(values, position); },
|
||||
head: function () { return _this.addManyHead(values); },
|
||||
tail: function () { return _this.addManyTail(values); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.addAfter = function (value, previousValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
|
||||
return previous ? this.attach(value, previous, previous.next) : this.addTail(value);
|
||||
};
|
||||
LinkedList.prototype.addBefore = function (value, nextValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var next = this.find(function (node) { return compareFn(node.value, nextValue); });
|
||||
return next ? this.attach(value, next.previous, next) : this.addHead(value);
|
||||
};
|
||||
LinkedList.prototype.addByIndex = function (value, position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
else if (position >= this.size)
|
||||
return this.addTail(value);
|
||||
if (position <= 0)
|
||||
return this.addHead(value);
|
||||
var next = this.get(position);
|
||||
return this.attach(value, next.previous, next);
|
||||
};
|
||||
LinkedList.prototype.addHead = function (value) {
|
||||
var node = new ListNode(value);
|
||||
node.next = this.first;
|
||||
if (this.first)
|
||||
this.first.previous = node;
|
||||
else
|
||||
this.last = node;
|
||||
this.first = node;
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.addTail = function (value) {
|
||||
var node = new ListNode(value);
|
||||
if (this.first) {
|
||||
node.previous = this.last;
|
||||
this.last.next = node;
|
||||
this.last = node;
|
||||
}
|
||||
else {
|
||||
this.first = node;
|
||||
this.last = node;
|
||||
}
|
||||
this.size++;
|
||||
return node;
|
||||
};
|
||||
LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
|
||||
return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);
|
||||
};
|
||||
LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var next = this.find(function (node) { return compareFn(node.value, nextValue); });
|
||||
return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);
|
||||
};
|
||||
LinkedList.prototype.addManyByIndex = function (values, position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
if (position <= 0)
|
||||
return this.addManyHead(values);
|
||||
if (position >= this.size)
|
||||
return this.addManyTail(values);
|
||||
var next = this.get(position);
|
||||
return this.attachMany(values, next.previous, next);
|
||||
};
|
||||
LinkedList.prototype.addManyHead = function (values) {
|
||||
var _this = this;
|
||||
return values.reduceRight(function (nodes, value) {
|
||||
nodes.unshift(_this.addHead(value));
|
||||
return nodes;
|
||||
}, []);
|
||||
};
|
||||
LinkedList.prototype.addManyTail = function (values) {
|
||||
var _this = this;
|
||||
return values.map(function (value) { return _this.addTail(value); });
|
||||
};
|
||||
LinkedList.prototype.drop = function () {
|
||||
var _this = this;
|
||||
return {
|
||||
byIndex: function (position) { return _this.dropByIndex(position); },
|
||||
byValue: function () {
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return _this.dropByValue.apply(_this, params);
|
||||
},
|
||||
byValueAll: function () {
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
return _this.dropByValueAll.apply(_this, params);
|
||||
},
|
||||
head: function () { return _this.dropHead(); },
|
||||
tail: function () { return _this.dropTail(); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.dropMany = function (count) {
|
||||
var _this = this;
|
||||
return {
|
||||
byIndex: function (position) { return _this.dropManyByIndex(count, position); },
|
||||
head: function () { return _this.dropManyHead(count); },
|
||||
tail: function () { return _this.dropManyTail(count); },
|
||||
};
|
||||
};
|
||||
LinkedList.prototype.dropByIndex = function (position) {
|
||||
if (position < 0)
|
||||
position += this.size;
|
||||
var current = this.get(position);
|
||||
return current ? this.detach(current) : undefined;
|
||||
};
|
||||
LinkedList.prototype.dropByValue = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var position = this.findIndex(function (node) { return compareFn(node.value, value); });
|
||||
return position < 0 ? undefined : this.dropByIndex(position);
|
||||
};
|
||||
LinkedList.prototype.dropByValueAll = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
var dropped = [];
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (compareFn(current.value, value)) {
|
||||
dropped.push(this.dropByIndex(position - dropped.length));
|
||||
}
|
||||
}
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropHead = function () {
|
||||
var head = this.first;
|
||||
if (head) {
|
||||
this.first = head.next;
|
||||
if (this.first)
|
||||
this.first.previous = undefined;
|
||||
else
|
||||
this.last = undefined;
|
||||
this.size--;
|
||||
return head;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.dropTail = function () {
|
||||
var tail = this.last;
|
||||
if (tail) {
|
||||
this.last = tail.previous;
|
||||
if (this.last)
|
||||
this.last.next = undefined;
|
||||
else
|
||||
this.first = undefined;
|
||||
this.size--;
|
||||
return tail;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.dropManyByIndex = function (count, position) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
if (position < 0)
|
||||
position = Math.max(position + this.size, 0);
|
||||
else if (position >= this.size)
|
||||
return [];
|
||||
count = Math.min(count, this.size - position);
|
||||
var dropped = [];
|
||||
while (count--) {
|
||||
var current = this.get(position);
|
||||
dropped.push(this.detach(current));
|
||||
}
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropManyHead = function (count) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
count = Math.min(count, this.size);
|
||||
var dropped = [];
|
||||
while (count--)
|
||||
dropped.unshift(this.dropHead());
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.dropManyTail = function (count) {
|
||||
if (count <= 0)
|
||||
return [];
|
||||
count = Math.min(count, this.size);
|
||||
var dropped = [];
|
||||
while (count--)
|
||||
dropped.push(this.dropTail());
|
||||
return dropped;
|
||||
};
|
||||
LinkedList.prototype.find = function (predicate) {
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (predicate(current, position, this))
|
||||
return current;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
LinkedList.prototype.findIndex = function (predicate) {
|
||||
for (var current = this.first, position = 0; current; position++, current = current.next) {
|
||||
if (predicate(current, position, this))
|
||||
return position;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
LinkedList.prototype.forEach = function (callback) {
|
||||
for (var node = this.first, position = 0; node; position++, node = node.next) {
|
||||
callback(node, position, this);
|
||||
}
|
||||
};
|
||||
LinkedList.prototype.get = function (position) {
|
||||
return this.find(function (_, index) { return position === index; });
|
||||
};
|
||||
LinkedList.prototype.indexOf = function (value, compareFn) {
|
||||
if (compareFn === void 0) { compareFn = compare; }
|
||||
return this.findIndex(function (node) { return compareFn(node.value, value); });
|
||||
};
|
||||
LinkedList.prototype.toArray = function () {
|
||||
var array = new Array(this.size);
|
||||
this.forEach(function (node, index) { return (array[index] = node.value); });
|
||||
return array;
|
||||
};
|
||||
LinkedList.prototype.toNodeArray = function () {
|
||||
var array = new Array(this.size);
|
||||
this.forEach(function (node, index) { return (array[index] = node); });
|
||||
return array;
|
||||
};
|
||||
LinkedList.prototype.toString = function (mapperFn) {
|
||||
if (mapperFn === void 0) { mapperFn = JSON.stringify; }
|
||||
return this.toArray()
|
||||
.map(function (value) { return mapperFn(value); })
|
||||
.join(' <-> ');
|
||||
};
|
||||
// Cannot use Generator type because of ng-packagr
|
||||
LinkedList.prototype[Symbol.iterator] = function () {
|
||||
var node, position;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
node = this.first, position = 0;
|
||||
_a.label = 1;
|
||||
case 1:
|
||||
if (!node) return [3 /*break*/, 4];
|
||||
return [4 /*yield*/, node.value];
|
||||
case 2:
|
||||
_a.sent();
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
position++, node = node.next;
|
||||
return [3 /*break*/, 1];
|
||||
case 4: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
};
|
||||
return LinkedList;
|
||||
}());
|
||||
|
||||
exports.LinkedList = LinkedList;
|
||||
exports.ListNode = ListNode;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
//# sourceMappingURL=abp-utils.umd.js.map
|