@triangular/password-checker 4.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/esm2020/lib/password-checker-lib.directive.mjs +79 -0
- package/esm2020/lib/password-checker-lib.module.mjs +30 -0
- package/esm2020/lib/password-checker.config.mjs +3 -0
- package/esm2020/public_api.mjs +6 -0
- package/esm2020/triangular-password-checker.mjs +5 -0
- package/fesm2015/triangular-password-checker.mjs +119 -0
- package/fesm2015/triangular-password-checker.mjs.map +1 -0
- package/fesm2020/triangular-password-checker.mjs +117 -0
- package/fesm2020/triangular-password-checker.mjs.map +1 -0
- package/lib/password-checker-lib.directive.d.ts +3 -0
- package/lib/password-checker-lib.module.d.ts +6 -0
- package/package.json +26 -14
- package/triangular-password-checker.d.ts +1 -1
- package/bundles/triangular-password-checker.umd.js +0 -315
- package/bundles/triangular-password-checker.umd.js.map +0 -1
- package/bundles/triangular-password-checker.umd.min.js +0 -2
- package/bundles/triangular-password-checker.umd.min.js.map +0 -1
- package/esm2015/lib/password-checker-lib.directive.js +0 -79
- package/esm2015/lib/password-checker-lib.module.js +0 -28
- package/esm2015/lib/password-checker.config.js +0 -3
- package/esm2015/public_api.js +0 -6
- package/esm2015/triangular-password-checker.js +0 -6
- package/esm5/lib/password-checker-lib.directive.js +0 -82
- package/esm5/lib/password-checker-lib.module.js +0 -33
- package/esm5/lib/password-checker.config.js +0 -3
- package/esm5/public_api.js +0 -6
- package/esm5/triangular-password-checker.js +0 -6
- package/fesm2015/triangular-password-checker.js +0 -112
- package/fesm2015/triangular-password-checker.js.map +0 -1
- package/fesm5/triangular-password-checker.js +0 -120
- package/fesm5/triangular-password-checker.js.map +0 -1
- package/triangular-password-checker.metadata.json +0 -1
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('rxjs/operators'), require('@angular/forms'), require('@angular/core'), require('@angular/common/http'), require('crypto-js/sha1')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@triangular/password-checker', ['exports', 'rxjs', 'rxjs/operators', '@angular/forms', '@angular/core', '@angular/common/http', 'crypto-js/sha1'], factory) :
|
|
4
|
-
(global = global || self, factory((global.triangular = global.triangular || {}, global.triangular['password-checker'] = {}), global.rxjs, global.rxjs.operators, global.ng.forms, global.ng.core, global.ng.common.http, global.sha1));
|
|
5
|
-
}(this, (function (exports, rxjs, operators, forms, core, http, sha1) { 'use strict';
|
|
6
|
-
|
|
7
|
-
sha1 = sha1 && sha1.hasOwnProperty('default') ? sha1['default'] : sha1;
|
|
8
|
-
|
|
9
|
-
/*! *****************************************************************************
|
|
10
|
-
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
11
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
12
|
-
this file except in compliance with the License. You may obtain a copy of the
|
|
13
|
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
-
|
|
15
|
-
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
-
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
|
17
|
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
|
18
|
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
|
19
|
-
|
|
20
|
-
See the Apache Version 2.0 License for specific language governing permissions
|
|
21
|
-
and limitations under the License.
|
|
22
|
-
***************************************************************************** */
|
|
23
|
-
/* global Reflect, Promise */
|
|
24
|
-
|
|
25
|
-
var extendStatics = function(d, b) {
|
|
26
|
-
extendStatics = Object.setPrototypeOf ||
|
|
27
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
28
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
29
|
-
return extendStatics(d, b);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
function __extends(d, b) {
|
|
33
|
-
extendStatics(d, b);
|
|
34
|
-
function __() { this.constructor = d; }
|
|
35
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
var __assign = function() {
|
|
39
|
-
__assign = Object.assign || function __assign(t) {
|
|
40
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
41
|
-
s = arguments[i];
|
|
42
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
43
|
-
}
|
|
44
|
-
return t;
|
|
45
|
-
};
|
|
46
|
-
return __assign.apply(this, arguments);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
function __rest(s, e) {
|
|
50
|
-
var t = {};
|
|
51
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
52
|
-
t[p] = s[p];
|
|
53
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
54
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
55
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
56
|
-
t[p[i]] = s[p[i]];
|
|
57
|
-
}
|
|
58
|
-
return t;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function __decorate(decorators, target, key, desc) {
|
|
62
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
63
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
64
|
-
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;
|
|
65
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function __param(paramIndex, decorator) {
|
|
69
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function __metadata(metadataKey, metadataValue) {
|
|
73
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
77
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
78
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
79
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
80
|
-
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
81
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function __generator(thisArg, body) {
|
|
86
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
87
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
88
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
89
|
-
function step(op) {
|
|
90
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
91
|
-
while (_) try {
|
|
92
|
-
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;
|
|
93
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
94
|
-
switch (op[0]) {
|
|
95
|
-
case 0: case 1: t = op; break;
|
|
96
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
97
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
98
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
99
|
-
default:
|
|
100
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
101
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
102
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
103
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
104
|
-
if (t[2]) _.ops.pop();
|
|
105
|
-
_.trys.pop(); continue;
|
|
106
|
-
}
|
|
107
|
-
op = body.call(thisArg, _);
|
|
108
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
109
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function __exportStar(m, exports) {
|
|
114
|
-
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function __values(o) {
|
|
118
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
119
|
-
if (m) return m.call(o);
|
|
120
|
-
return {
|
|
121
|
-
next: function () {
|
|
122
|
-
if (o && i >= o.length) o = void 0;
|
|
123
|
-
return { value: o && o[i++], done: !o };
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function __read(o, n) {
|
|
129
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
130
|
-
if (!m) return o;
|
|
131
|
-
var i = m.call(o), r, ar = [], e;
|
|
132
|
-
try {
|
|
133
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
134
|
-
}
|
|
135
|
-
catch (error) { e = { error: error }; }
|
|
136
|
-
finally {
|
|
137
|
-
try {
|
|
138
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
139
|
-
}
|
|
140
|
-
finally { if (e) throw e.error; }
|
|
141
|
-
}
|
|
142
|
-
return ar;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function __spread() {
|
|
146
|
-
for (var ar = [], i = 0; i < arguments.length; i++)
|
|
147
|
-
ar = ar.concat(__read(arguments[i]));
|
|
148
|
-
return ar;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
function __spreadArrays() {
|
|
152
|
-
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
153
|
-
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
154
|
-
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
155
|
-
r[k] = a[j];
|
|
156
|
-
return r;
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
function __await(v) {
|
|
160
|
-
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
164
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
165
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
166
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
167
|
-
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); }); }; }
|
|
168
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
169
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
170
|
-
function fulfill(value) { resume("next", value); }
|
|
171
|
-
function reject(value) { resume("throw", value); }
|
|
172
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function __asyncDelegator(o) {
|
|
176
|
-
var i, p;
|
|
177
|
-
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
178
|
-
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; }
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
function __asyncValues(o) {
|
|
182
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
183
|
-
var m = o[Symbol.asyncIterator], i;
|
|
184
|
-
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);
|
|
185
|
-
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); }); }; }
|
|
186
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function __makeTemplateObject(cooked, raw) {
|
|
190
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
191
|
-
return cooked;
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
function __importStar(mod) {
|
|
195
|
-
if (mod && mod.__esModule) return mod;
|
|
196
|
-
var result = {};
|
|
197
|
-
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
198
|
-
result.default = mod;
|
|
199
|
-
return result;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function __importDefault(mod) {
|
|
203
|
-
return (mod && mod.__esModule) ? mod : { default: mod };
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
var PasswordCheckerConfigValue = new core.InjectionToken('PASSWORD_CHECKER_CONFIG');
|
|
207
|
-
|
|
208
|
-
var PasswordCheckerLibDirective = /** @class */ (function () {
|
|
209
|
-
function PasswordCheckerLibDirective(http, config) {
|
|
210
|
-
this.http = http;
|
|
211
|
-
if (!config) {
|
|
212
|
-
// default initialization in constructor didn't work.
|
|
213
|
-
// conflict with @Optional()?
|
|
214
|
-
config = {};
|
|
215
|
-
}
|
|
216
|
-
this.pwnedPasswordApi =
|
|
217
|
-
config.pwnedPasswordApi
|
|
218
|
-
|| 'https://api.pwnedpasswords.com/range/';
|
|
219
|
-
this.pwnedPasswordMinimumOccurrenceForError =
|
|
220
|
-
config.pwnedPasswordMinimumOccurrenceForError
|
|
221
|
-
|| 1;
|
|
222
|
-
this.pwnedPasswordApiCallDebounceTime =
|
|
223
|
-
config.pwnedPasswordApiCallDebounceTime
|
|
224
|
-
|| 400;
|
|
225
|
-
}
|
|
226
|
-
PasswordCheckerLibDirective_1 = PasswordCheckerLibDirective;
|
|
227
|
-
PasswordCheckerLibDirective.prototype.validate = function (control) {
|
|
228
|
-
var _this = this;
|
|
229
|
-
var pw = ''.concat(control.value);
|
|
230
|
-
return rxjs.timer(this.pwnedPasswordApiCallDebounceTime).pipe(operators.map(function () {
|
|
231
|
-
var pwSha1 = sha1(pw).toString().toUpperCase();
|
|
232
|
-
return {
|
|
233
|
-
firstPart: pwSha1.substring(0, 5),
|
|
234
|
-
lastPart: pwSha1.substring(5),
|
|
235
|
-
};
|
|
236
|
-
}), operators.switchMap(function (hash) { return _this.http.get("" + _this.pwnedPasswordApi + hash.firstPart, { responseType: 'text' }).pipe(operators.map(function (passwords) { return passwords.split(/[\r\n]+/); }), operators.map(function (passwords) { return passwords.map(function (password) {
|
|
237
|
-
var split = password.split(':');
|
|
238
|
-
return {
|
|
239
|
-
hash: split[0],
|
|
240
|
-
count: parseInt(split[1], 10),
|
|
241
|
-
};
|
|
242
|
-
}); }), operators.map(function (passwords) { return passwords.find(function (password) { return password.hash === hash.lastPart; }); })); }), operators.map(function (password) { return password && password.count >= _this.pwnedPasswordMinimumOccurrenceForError
|
|
243
|
-
? { pwnedPasswordOccurrence: password.count }
|
|
244
|
-
: null; }));
|
|
245
|
-
};
|
|
246
|
-
var PasswordCheckerLibDirective_1;
|
|
247
|
-
PasswordCheckerLibDirective.ctorParameters = function () { return [
|
|
248
|
-
{ type: http.HttpClient },
|
|
249
|
-
{ type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [PasswordCheckerConfigValue,] }] }
|
|
250
|
-
]; };
|
|
251
|
-
__decorate([
|
|
252
|
-
core.Input(),
|
|
253
|
-
__metadata("design:type", String)
|
|
254
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordApi", void 0);
|
|
255
|
-
__decorate([
|
|
256
|
-
core.Input(),
|
|
257
|
-
__metadata("design:type", Number)
|
|
258
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordMinimumOccurrenceForError", void 0);
|
|
259
|
-
__decorate([
|
|
260
|
-
core.Input(),
|
|
261
|
-
__metadata("design:type", Number)
|
|
262
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordApiCallDebounceTime", void 0);
|
|
263
|
-
PasswordCheckerLibDirective = PasswordCheckerLibDirective_1 = __decorate([
|
|
264
|
-
core.Directive({
|
|
265
|
-
// tslint:disable-next-line directive-selector
|
|
266
|
-
selector: '[pwnedPasswordValidator][formControlName], [pwnedPasswordValidator][ngModel],[pwnedPasswordValidator][formControl]',
|
|
267
|
-
providers: [
|
|
268
|
-
{
|
|
269
|
-
provide: forms.NG_ASYNC_VALIDATORS,
|
|
270
|
-
useExisting: PasswordCheckerLibDirective_1,
|
|
271
|
-
multi: true,
|
|
272
|
-
},
|
|
273
|
-
]
|
|
274
|
-
}),
|
|
275
|
-
__param(1, core.Optional()), __param(1, core.Inject(PasswordCheckerConfigValue)),
|
|
276
|
-
__metadata("design:paramtypes", [http.HttpClient, Object])
|
|
277
|
-
], PasswordCheckerLibDirective);
|
|
278
|
-
return PasswordCheckerLibDirective;
|
|
279
|
-
}());
|
|
280
|
-
|
|
281
|
-
var PasswordCheckerModule = /** @class */ (function () {
|
|
282
|
-
function PasswordCheckerModule() {
|
|
283
|
-
}
|
|
284
|
-
PasswordCheckerModule_1 = PasswordCheckerModule;
|
|
285
|
-
PasswordCheckerModule.forRoot = function (config) {
|
|
286
|
-
if (config === void 0) { config = {}; }
|
|
287
|
-
return {
|
|
288
|
-
ngModule: PasswordCheckerModule_1,
|
|
289
|
-
providers: [
|
|
290
|
-
{
|
|
291
|
-
provide: PasswordCheckerConfigValue,
|
|
292
|
-
useValue: config,
|
|
293
|
-
}
|
|
294
|
-
]
|
|
295
|
-
};
|
|
296
|
-
};
|
|
297
|
-
var PasswordCheckerModule_1;
|
|
298
|
-
PasswordCheckerModule = PasswordCheckerModule_1 = __decorate([
|
|
299
|
-
core.NgModule({
|
|
300
|
-
declarations: [PasswordCheckerLibDirective],
|
|
301
|
-
imports: [http.HttpClientModule],
|
|
302
|
-
exports: [PasswordCheckerLibDirective]
|
|
303
|
-
})
|
|
304
|
-
], PasswordCheckerModule);
|
|
305
|
-
return PasswordCheckerModule;
|
|
306
|
-
}());
|
|
307
|
-
|
|
308
|
-
exports.PasswordCheckerLibDirective = PasswordCheckerLibDirective;
|
|
309
|
-
exports.PasswordCheckerModule = PasswordCheckerModule;
|
|
310
|
-
exports.ɵb = PasswordCheckerConfigValue;
|
|
311
|
-
|
|
312
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
313
|
-
|
|
314
|
-
})));
|
|
315
|
-
//# sourceMappingURL=triangular-password-checker.umd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"triangular-password-checker.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@triangular/password-checker/lib/password-checker.config.ts","ng://@triangular/password-checker/lib/password-checker-lib.directive.ts","ng://@triangular/password-checker/lib/password-checker-lib.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n 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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n 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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n 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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n 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);\r\n 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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {InjectionToken} from '@angular/core';\n\nexport type Partial<T> = {\n [P in keyof T]?: T[P];\n};\n\nexport interface PasswordCheckerConfig {\n pwnedPasswordApi: string;\n pwnedPasswordMinimumOccurrenceForError: number;\n pwnedPasswordApiCallDebounceTime: number;\n}\n\nexport const PasswordCheckerConfigValue = new InjectionToken<Partial<PasswordCheckerConfig>>('PASSWORD_CHECKER_CONFIG');\n","import { Observable, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AbstractControl, AsyncValidator, NG_ASYNC_VALIDATORS, ValidationErrors } from '@angular/forms';\nimport { Directive, Inject, Input, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport sha1 from 'crypto-js/sha1';\nimport { Partial, PasswordCheckerConfig, PasswordCheckerConfigValue } from './password-checker.config';\n\n@Directive({\n // tslint:disable-next-line directive-selector\n selector: '[pwnedPasswordValidator][formControlName], [pwnedPasswordValidator][ngModel],[pwnedPasswordValidator][formControl]',\n providers: [\n {\n provide: NG_ASYNC_VALIDATORS,\n useExisting: PasswordCheckerLibDirective,\n multi: true,\n },\n ]\n})\nexport class PasswordCheckerLibDirective implements AsyncValidator {\n private pwnedPasswordMinimumOccurrenceForErrorValue: number;\n\n @Input() pwnedPasswordApi: string;\n @Input() pwnedPasswordMinimumOccurrenceForError: number;\n @Input() pwnedPasswordApiCallDebounceTime: number;\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(PasswordCheckerConfigValue) config: Partial<PasswordCheckerConfig>,\n ) {\n\n if (!config) {\n // default initialization in constructor didn't work.\n // conflict with @Optional()?\n config = {};\n }\n\n this.pwnedPasswordApi =\n config.pwnedPasswordApi\n || 'https://api.pwnedpasswords.com/range/';\n this.pwnedPasswordMinimumOccurrenceForError =\n config.pwnedPasswordMinimumOccurrenceForError\n || 1;\n this.pwnedPasswordApiCallDebounceTime =\n config.pwnedPasswordApiCallDebounceTime\n || 400;\n }\n\n validate(control: AbstractControl): Observable<ValidationErrors|null> {\n const pw = ''.concat(control.value);\n\n return timer(this.pwnedPasswordApiCallDebounceTime).pipe(\n map(() => {\n const pwSha1 = sha1(pw).toString().toUpperCase();\n\n return {\n firstPart: pwSha1.substring(0, 5),\n lastPart: pwSha1.substring(5),\n };\n }),\n switchMap(\n (hash) => this.http.get(\n `${this.pwnedPasswordApi}${hash.firstPart}`, { responseType: 'text' }\n ).pipe(\n map(passwords => passwords.split(/[\\r\\n]+/)),\n map(passwords => passwords.map((password) => {\n const split = password.split(':');\n\n return {\n hash: split[0],\n count: parseInt(split[1], 10),\n };\n }\n )),\n map(passwords => passwords.find(password => password.hash === hash.lastPart)),\n ),\n ),\n map(password => password && password.count >= this.pwnedPasswordMinimumOccurrenceForError\n ? { pwnedPasswordOccurrence: password.count }\n : null),\n );\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { PasswordCheckerLibDirective } from './password-checker-lib.directive';\nimport { HttpClientModule } from '@angular/common/http';\nimport { Partial, PasswordCheckerConfig, PasswordCheckerConfigValue } from './password-checker.config';\n\n@NgModule({\n declarations: [PasswordCheckerLibDirective],\n imports: [HttpClientModule],\n exports: [PasswordCheckerLibDirective]\n})\nexport class PasswordCheckerModule {\n static forRoot(config: Partial<PasswordCheckerConfig> = {}): ModuleWithProviders<PasswordCheckerModule> {\n return {\n ngModule: PasswordCheckerModule,\n providers: [\n {\n provide: PasswordCheckerConfigValue,\n useValue: config,\n }\n ]\n };\n }\n}\n"],"names":["InjectionToken","timer","map","switchMap","HttpClient","Optional","Inject","Input","Directive","NG_ASYNC_VALIDATORS","NgModule","HttpClientModule"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("rxjs"),require("rxjs/operators"),require("@angular/forms"),require("@angular/core"),require("@angular/common/http"),require("crypto-js/sha1")):"function"==typeof define&&define.amd?define("@triangular/password-checker",["exports","rxjs","rxjs/operators","@angular/forms","@angular/core","@angular/common/http","crypto-js/sha1"],r):r(((e=e||self).triangular=e.triangular||{},e.triangular["password-checker"]={}),e.rxjs,e.rxjs.operators,e.ng.forms,e.ng.core,e.ng.common.http,e.sha1)}(this,(function(e,r,t,n,o,i,a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;function s(e,r,t,n){var o,i=arguments.length,a=i<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,r,t,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(r,t,a):o(r,t))||a);return i>3&&a&&Object.defineProperty(r,t,a),a}function p(e,r){return function(t,n){r(t,n,e)}}function u(e,r){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,r)}var c=new o.InjectionToken("PASSWORD_CHECKER_CONFIG"),d=function(){function e(e,r){this.http=e,r||(r={}),this.pwnedPasswordApi=r.pwnedPasswordApi||"https://api.pwnedpasswords.com/range/",this.pwnedPasswordMinimumOccurrenceForError=r.pwnedPasswordMinimumOccurrenceForError||1,this.pwnedPasswordApiCallDebounceTime=r.pwnedPasswordApiCallDebounceTime||400}var d;return d=e,e.prototype.validate=function(e){var n=this,o="".concat(e.value);return r.timer(this.pwnedPasswordApiCallDebounceTime).pipe(t.map((function(){var e=a(o).toString().toUpperCase();return{firstPart:e.substring(0,5),lastPart:e.substring(5)}})),t.switchMap((function(e){return n.http.get(""+n.pwnedPasswordApi+e.firstPart,{responseType:"text"}).pipe(t.map((function(e){return e.split(/[\r\n]+/)})),t.map((function(e){return e.map((function(e){var r=e.split(":");return{hash:r[0],count:parseInt(r[1],10)}}))})),t.map((function(r){return r.find((function(r){return r.hash===e.lastPart}))})))})),t.map((function(e){return e&&e.count>=n.pwnedPasswordMinimumOccurrenceForError?{pwnedPasswordOccurrence:e.count}:null})))},e.ctorParameters=function(){return[{type:i.HttpClient},{type:void 0,decorators:[{type:o.Optional},{type:o.Inject,args:[c]}]}]},s([o.Input(),u("design:type",String)],e.prototype,"pwnedPasswordApi",void 0),s([o.Input(),u("design:type",Number)],e.prototype,"pwnedPasswordMinimumOccurrenceForError",void 0),s([o.Input(),u("design:type",Number)],e.prototype,"pwnedPasswordApiCallDebounceTime",void 0),e=d=s([o.Directive({selector:"[pwnedPasswordValidator][formControlName], [pwnedPasswordValidator][ngModel],[pwnedPasswordValidator][formControl]",providers:[{provide:n.NG_ASYNC_VALIDATORS,useExisting:d,multi:!0}]}),p(1,o.Optional()),p(1,o.Inject(c)),u("design:paramtypes",[i.HttpClient,Object])],e)}(),l=function(){function e(){}var r;return r=e,e.forRoot=function(e){return void 0===e&&(e={}),{ngModule:r,providers:[{provide:c,useValue:e}]}},e=r=s([o.NgModule({declarations:[d],imports:[i.HttpClientModule],exports:[d]})],e)}();e.PasswordCheckerLibDirective=d,e.PasswordCheckerModule=l,e.ɵb=c,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=triangular-password-checker.umd.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@triangular/password-checker/lib/password-checker.config.ts","ng://@triangular/password-checker/lib/password-checker-lib.directive.ts","ng://@triangular/password-checker/lib/password-checker-lib.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","PasswordCheckerConfigValue","InjectionToken","PasswordCheckerLibDirective","http","config","this","pwnedPasswordApi","pwnedPasswordMinimumOccurrenceForError","pwnedPasswordApiCallDebounceTime","prototype","validate","control","_this","pw","concat","value","timer","pipe","map","pwSha1","sha1","toString","toUpperCase","firstPart","substring","lastPart","switchMap","hash","get","responseType","passwords","split","password","count","parseInt","find","pwnedPasswordOccurrence","HttpClient","Optional","type","Inject","args","Input","PasswordCheckerLibDirective_1","Directive","selector","providers","provide","NG_ASYNC_VALIDATORS","useExisting","multi","PasswordCheckerModule","forRoot","ngModule","PasswordCheckerModule_1","useValue","NgModule","declarations","imports","HttpClientModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n 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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n 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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n 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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n 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);\r\n 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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {InjectionToken} from '@angular/core';\n\nexport type Partial<T> = {\n [P in keyof T]?: T[P];\n};\n\nexport interface PasswordCheckerConfig {\n pwnedPasswordApi: string;\n pwnedPasswordMinimumOccurrenceForError: number;\n pwnedPasswordApiCallDebounceTime: number;\n}\n\nexport const PasswordCheckerConfigValue = new InjectionToken<Partial<PasswordCheckerConfig>>('PASSWORD_CHECKER_CONFIG');\n","import { Observable, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AbstractControl, AsyncValidator, NG_ASYNC_VALIDATORS, ValidationErrors } from '@angular/forms';\nimport { Directive, Inject, Input, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport sha1 from 'crypto-js/sha1';\nimport { Partial, PasswordCheckerConfig, PasswordCheckerConfigValue } from './password-checker.config';\n\n@Directive({\n // tslint:disable-next-line directive-selector\n selector: '[pwnedPasswordValidator][formControlName], [pwnedPasswordValidator][ngModel],[pwnedPasswordValidator][formControl]',\n providers: [\n {\n provide: NG_ASYNC_VALIDATORS,\n useExisting: PasswordCheckerLibDirective,\n multi: true,\n },\n ]\n})\nexport class PasswordCheckerLibDirective implements AsyncValidator {\n private pwnedPasswordMinimumOccurrenceForErrorValue: number;\n\n @Input() pwnedPasswordApi: string;\n @Input() pwnedPasswordMinimumOccurrenceForError: number;\n @Input() pwnedPasswordApiCallDebounceTime: number;\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(PasswordCheckerConfigValue) config: Partial<PasswordCheckerConfig>,\n ) {\n\n if (!config) {\n // default initialization in constructor didn't work.\n // conflict with @Optional()?\n config = {};\n }\n\n this.pwnedPasswordApi =\n config.pwnedPasswordApi\n || 'https://api.pwnedpasswords.com/range/';\n this.pwnedPasswordMinimumOccurrenceForError =\n config.pwnedPasswordMinimumOccurrenceForError\n || 1;\n this.pwnedPasswordApiCallDebounceTime =\n config.pwnedPasswordApiCallDebounceTime\n || 400;\n }\n\n validate(control: AbstractControl): Observable<ValidationErrors|null> {\n const pw = ''.concat(control.value);\n\n return timer(this.pwnedPasswordApiCallDebounceTime).pipe(\n map(() => {\n const pwSha1 = sha1(pw).toString().toUpperCase();\n\n return {\n firstPart: pwSha1.substring(0, 5),\n lastPart: pwSha1.substring(5),\n };\n }),\n switchMap(\n (hash) => this.http.get(\n `${this.pwnedPasswordApi}${hash.firstPart}`, { responseType: 'text' }\n ).pipe(\n map(passwords => passwords.split(/[\\r\\n]+/)),\n map(passwords => passwords.map((password) => {\n const split = password.split(':');\n\n return {\n hash: split[0],\n count: parseInt(split[1], 10),\n };\n }\n )),\n map(passwords => passwords.find(password => password.hash === hash.lastPart)),\n ),\n ),\n map(password => password && password.count >= this.pwnedPasswordMinimumOccurrenceForError\n ? { pwnedPasswordOccurrence: password.count }\n : null),\n );\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { PasswordCheckerLibDirective } from './password-checker-lib.directive';\nimport { HttpClientModule } from '@angular/common/http';\nimport { Partial, PasswordCheckerConfig, PasswordCheckerConfigValue } from './password-checker.config';\n\n@NgModule({\n declarations: [PasswordCheckerLibDirective],\n imports: [HttpClientModule],\n exports: [PasswordCheckerLibDirective]\n})\nexport class PasswordCheckerModule {\n static forRoot(config: Partial<PasswordCheckerConfig> = {}): ModuleWithProviders<PasswordCheckerModule> {\n return {\n ngModule: PasswordCheckerModule,\n providers: [\n {\n provide: PasswordCheckerConfigValue,\n useValue: config,\n }\n ]\n };\n }\n}\n"]}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
var PasswordCheckerLibDirective_1;
|
|
2
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
3
|
-
import { timer } from 'rxjs';
|
|
4
|
-
import { map, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { NG_ASYNC_VALIDATORS } from '@angular/forms';
|
|
6
|
-
import { Directive, Inject, Input, Optional } from '@angular/core';
|
|
7
|
-
import { HttpClient } from '@angular/common/http';
|
|
8
|
-
import sha1 from 'crypto-js/sha1';
|
|
9
|
-
import { PasswordCheckerConfigValue } from './password-checker.config';
|
|
10
|
-
let PasswordCheckerLibDirective = PasswordCheckerLibDirective_1 = class PasswordCheckerLibDirective {
|
|
11
|
-
constructor(http, config) {
|
|
12
|
-
this.http = http;
|
|
13
|
-
if (!config) {
|
|
14
|
-
// default initialization in constructor didn't work.
|
|
15
|
-
// conflict with @Optional()?
|
|
16
|
-
config = {};
|
|
17
|
-
}
|
|
18
|
-
this.pwnedPasswordApi =
|
|
19
|
-
config.pwnedPasswordApi
|
|
20
|
-
|| 'https://api.pwnedpasswords.com/range/';
|
|
21
|
-
this.pwnedPasswordMinimumOccurrenceForError =
|
|
22
|
-
config.pwnedPasswordMinimumOccurrenceForError
|
|
23
|
-
|| 1;
|
|
24
|
-
this.pwnedPasswordApiCallDebounceTime =
|
|
25
|
-
config.pwnedPasswordApiCallDebounceTime
|
|
26
|
-
|| 400;
|
|
27
|
-
}
|
|
28
|
-
validate(control) {
|
|
29
|
-
const pw = ''.concat(control.value);
|
|
30
|
-
return timer(this.pwnedPasswordApiCallDebounceTime).pipe(map(() => {
|
|
31
|
-
const pwSha1 = sha1(pw).toString().toUpperCase();
|
|
32
|
-
return {
|
|
33
|
-
firstPart: pwSha1.substring(0, 5),
|
|
34
|
-
lastPart: pwSha1.substring(5),
|
|
35
|
-
};
|
|
36
|
-
}), switchMap((hash) => this.http.get(`${this.pwnedPasswordApi}${hash.firstPart}`, { responseType: 'text' }).pipe(map(passwords => passwords.split(/[\r\n]+/)), map(passwords => passwords.map((password) => {
|
|
37
|
-
const split = password.split(':');
|
|
38
|
-
return {
|
|
39
|
-
hash: split[0],
|
|
40
|
-
count: parseInt(split[1], 10),
|
|
41
|
-
};
|
|
42
|
-
})), map(passwords => passwords.find(password => password.hash === hash.lastPart)))), map(password => password && password.count >= this.pwnedPasswordMinimumOccurrenceForError
|
|
43
|
-
? { pwnedPasswordOccurrence: password.count }
|
|
44
|
-
: null));
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
PasswordCheckerLibDirective.ctorParameters = () => [
|
|
48
|
-
{ type: HttpClient },
|
|
49
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PasswordCheckerConfigValue,] }] }
|
|
50
|
-
];
|
|
51
|
-
__decorate([
|
|
52
|
-
Input(),
|
|
53
|
-
__metadata("design:type", String)
|
|
54
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordApi", void 0);
|
|
55
|
-
__decorate([
|
|
56
|
-
Input(),
|
|
57
|
-
__metadata("design:type", Number)
|
|
58
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordMinimumOccurrenceForError", void 0);
|
|
59
|
-
__decorate([
|
|
60
|
-
Input(),
|
|
61
|
-
__metadata("design:type", Number)
|
|
62
|
-
], PasswordCheckerLibDirective.prototype, "pwnedPasswordApiCallDebounceTime", void 0);
|
|
63
|
-
PasswordCheckerLibDirective = PasswordCheckerLibDirective_1 = __decorate([
|
|
64
|
-
Directive({
|
|
65
|
-
// tslint:disable-next-line directive-selector
|
|
66
|
-
selector: '[pwnedPasswordValidator][formControlName], [pwnedPasswordValidator][ngModel],[pwnedPasswordValidator][formControl]',
|
|
67
|
-
providers: [
|
|
68
|
-
{
|
|
69
|
-
provide: NG_ASYNC_VALIDATORS,
|
|
70
|
-
useExisting: PasswordCheckerLibDirective_1,
|
|
71
|
-
multi: true,
|
|
72
|
-
},
|
|
73
|
-
]
|
|
74
|
-
}),
|
|
75
|
-
__param(1, Optional()), __param(1, Inject(PasswordCheckerConfigValue)),
|
|
76
|
-
__metadata("design:paramtypes", [HttpClient, Object])
|
|
77
|
-
], PasswordCheckerLibDirective);
|
|
78
|
-
export { PasswordCheckerLibDirective };
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY2hlY2tlci1saWIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRyaWFuZ3VsYXIvcGFzc3dvcmQtY2hlY2tlci8iLCJzb3VyY2VzIjpbImxpYi9wYXNzd29yZC1jaGVja2VyLWxpYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFtQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUNsQyxPQUFPLEVBQWtDLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFhdkcsSUFBYSwyQkFBMkIsbUNBQXhDLE1BQWEsMkJBQTJCO0lBT3RDLFlBQ1UsSUFBZ0IsRUFDd0IsTUFBc0M7UUFEOUUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUl4QixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gscURBQXFEO1lBQ3JELDZCQUE2QjtZQUM3QixNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsZ0JBQWdCO1lBQ25CLE1BQU0sQ0FBQyxnQkFBZ0I7bUJBQ3BCLHVDQUF1QyxDQUFDO1FBQzdDLElBQUksQ0FBQyxzQ0FBc0M7WUFDekMsTUFBTSxDQUFDLHNDQUFzQzttQkFDMUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLGdDQUFnQztZQUNuQyxNQUFNLENBQUMsZ0NBQWdDO21CQUNwQyxHQUFHLENBQUM7SUFDWCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVqRCxPQUFPO2dCQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUNQLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDckIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUNyRSxDQUFDLElBQUksQ0FDTixHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4QyxNQUFNLEtBQUssR0FBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRW5DLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQzlCLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUM5RSxDQUNGLEVBQ0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLHNDQUFzQztZQUN2RixDQUFDLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7O1lBdkRpQixVQUFVOzRDQUN2QixRQUFRLFlBQUksTUFBTSxTQUFDLDBCQUEwQjs7QUFOdkM7SUFBUixLQUFLLEVBQUU7O3FFQUEwQjtBQUN6QjtJQUFSLEtBQUssRUFBRTs7MkZBQWdEO0FBQy9DO0lBQVIsS0FBSyxFQUFFOztxRkFBMEM7QUFMdkMsMkJBQTJCO0lBWHZDLFNBQVMsQ0FBQztRQUNULDhDQUE4QztRQUM5QyxRQUFRLEVBQUUsb0hBQW9IO1FBQzlILFNBQVMsRUFBRTtZQUNMO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSw2QkFBMkI7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjtLQUNOLENBQUM7SUFVRyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtxQ0FEakMsVUFBVTtHQVJmLDJCQUEyQixDQStEdkM7U0EvRFksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvciwgTkdfQVNZTkNfVkFMSURBVE9SUywgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgc2hhMSBmcm9tICdjcnlwdG8tanMvc2hhMSc7XG5pbXBvcnQgeyBQYXJ0aWFsLCBQYXNzd29yZENoZWNrZXJDb25maWcsIFBhc3N3b3JkQ2hlY2tlckNvbmZpZ1ZhbHVlIH0gZnJvbSAnLi9wYXNzd29yZC1jaGVja2VyLmNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3B3bmVkUGFzc3dvcmRWYWxpZGF0b3JdW2Zvcm1Db250cm9sTmFtZV0sIFtwd25lZFBhc3N3b3JkVmFsaWRhdG9yXVtuZ01vZGVsXSxbcHduZWRQYXNzd29yZFZhbGlkYXRvcl1bZm9ybUNvbnRyb2xdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBOR19BU1lOQ19WQUxJREFUT1JTLFxuICAgICAgICAgIHVzZUV4aXN0aW5nOiBQYXNzd29yZENoZWNrZXJMaWJEaXJlY3RpdmUsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkQ2hlY2tlckxpYkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFzeW5jVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSBwd25lZFBhc3N3b3JkTWluaW11bU9jY3VycmVuY2VGb3JFcnJvclZhbHVlOiBudW1iZXI7XG5cbiAgQElucHV0KCkgcHduZWRQYXNzd29yZEFwaTogc3RyaW5nO1xuICBASW5wdXQoKSBwd25lZFBhc3N3b3JkTWluaW11bU9jY3VycmVuY2VGb3JFcnJvcjogbnVtYmVyO1xuICBASW5wdXQoKSBwd25lZFBhc3N3b3JkQXBpQ2FsbERlYm91bmNlVGltZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBhc3N3b3JkQ2hlY2tlckNvbmZpZ1ZhbHVlKSBjb25maWc6IFBhcnRpYWw8UGFzc3dvcmRDaGVja2VyQ29uZmlnPixcbiAgICApIHtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICAvLyBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGluIGNvbnN0cnVjdG9yIGRpZG4ndCB3b3JrLlxuICAgICAgLy8gY29uZmxpY3Qgd2l0aCBAT3B0aW9uYWwoKT9cbiAgICAgIGNvbmZpZyA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMucHduZWRQYXNzd29yZEFwaSA9XG4gICAgICBjb25maWcucHduZWRQYXNzd29yZEFwaVxuICAgICAgfHwgJ2h0dHBzOi8vYXBpLnB3bmVkcGFzc3dvcmRzLmNvbS9yYW5nZS8nO1xuICAgIHRoaXMucHduZWRQYXNzd29yZE1pbmltdW1PY2N1cnJlbmNlRm9yRXJyb3IgPVxuICAgICAgY29uZmlnLnB3bmVkUGFzc3dvcmRNaW5pbXVtT2NjdXJyZW5jZUZvckVycm9yXG4gICAgICB8fCAxO1xuICAgIHRoaXMucHduZWRQYXNzd29yZEFwaUNhbGxEZWJvdW5jZVRpbWUgPVxuICAgICAgY29uZmlnLnB3bmVkUGFzc3dvcmRBcGlDYWxsRGVib3VuY2VUaW1lXG4gICAgICB8fCA0MDA7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnN8bnVsbD4ge1xuICAgIGNvbnN0IHB3ID0gJycuY29uY2F0KGNvbnRyb2wudmFsdWUpO1xuXG4gICAgcmV0dXJuIHRpbWVyKHRoaXMucHduZWRQYXNzd29yZEFwaUNhbGxEZWJvdW5jZVRpbWUpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCBwd1NoYTEgPSBzaGExKHB3KS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaXJzdFBhcnQ6IHB3U2hhMS5zdWJzdHJpbmcoMCwgNSksXG4gICAgICAgICAgbGFzdFBhcnQ6IHB3U2hhMS5zdWJzdHJpbmcoNSksXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgKGhhc2gpID0+IHRoaXMuaHR0cC5nZXQoXG4gICAgICAgICAgYCR7dGhpcy5wd25lZFBhc3N3b3JkQXBpfSR7aGFzaC5maXJzdFBhcnR9YCwgIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICBtYXAocGFzc3dvcmRzID0+IHBhc3N3b3Jkcy5zcGxpdCgvW1xcclxcbl0rLykpLFxuICAgICAgICAgIG1hcChwYXNzd29yZHMgPT4gcGFzc3dvcmRzLm1hcCgocGFzc3dvcmQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BsaXQgPSAgcGFzc3dvcmQuc3BsaXQoJzonKTtcblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhhc2g6IHNwbGl0WzBdLFxuICAgICAgICAgICAgICAgIGNvdW50OiBwYXJzZUludChzcGxpdFsxXSwgMTApLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICkpLFxuICAgICAgICAgIG1hcChwYXNzd29yZHMgPT4gcGFzc3dvcmRzLmZpbmQocGFzc3dvcmQgPT4gcGFzc3dvcmQuaGFzaCA9PT0gaGFzaC5sYXN0UGFydCkpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIG1hcChwYXNzd29yZCA9PiBwYXNzd29yZCAmJiBwYXNzd29yZC5jb3VudCA+PSB0aGlzLnB3bmVkUGFzc3dvcmRNaW5pbXVtT2NjdXJyZW5jZUZvckVycm9yXG4gICAgICAgID8geyBwd25lZFBhc3N3b3JkT2NjdXJyZW5jZTogcGFzc3dvcmQuY291bnQgfVxuICAgICAgICA6IG51bGwpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
var PasswordCheckerModule_1;
|
|
2
|
-
import { __decorate } from "tslib";
|
|
3
|
-
import { NgModule } from '@angular/core';
|
|
4
|
-
import { PasswordCheckerLibDirective } from './password-checker-lib.directive';
|
|
5
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
6
|
-
import { PasswordCheckerConfigValue } from './password-checker.config';
|
|
7
|
-
let PasswordCheckerModule = PasswordCheckerModule_1 = class PasswordCheckerModule {
|
|
8
|
-
static forRoot(config = {}) {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: PasswordCheckerModule_1,
|
|
11
|
-
providers: [
|
|
12
|
-
{
|
|
13
|
-
provide: PasswordCheckerConfigValue,
|
|
14
|
-
useValue: config,
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
PasswordCheckerModule = PasswordCheckerModule_1 = __decorate([
|
|
21
|
-
NgModule({
|
|
22
|
-
declarations: [PasswordCheckerLibDirective],
|
|
23
|
-
imports: [HttpClientModule],
|
|
24
|
-
exports: [PasswordCheckerLibDirective]
|
|
25
|
-
})
|
|
26
|
-
], PasswordCheckerModule);
|
|
27
|
-
export { PasswordCheckerModule };
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY2hlY2tlci1saWIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRyaWFuZ3VsYXIvcGFzc3dvcmQtY2hlY2tlci8iLCJzb3VyY2VzIjpbImxpYi9wYXNzd29yZC1jaGVja2VyLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQWtDLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPdkcsSUFBYSxxQkFBcUIsNkJBQWxDLE1BQWEscUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBeUMsRUFBRTtRQUN4RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLHVCQUFxQjtZQUMvQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUFaWSxxQkFBcUI7SUFMakMsUUFBUSxDQUFDO1FBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7UUFDM0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDM0IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7S0FDdkMsQ0FBQztHQUNXLHFCQUFxQixDQVlqQztTQVpZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXNzd29yZENoZWNrZXJMaWJEaXJlY3RpdmUgfSBmcm9tICcuL3Bhc3N3b3JkLWNoZWNrZXItbGliLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUGFydGlhbCwgUGFzc3dvcmRDaGVja2VyQ29uZmlnLCBQYXNzd29yZENoZWNrZXJDb25maWdWYWx1ZSB9IGZyb20gJy4vcGFzc3dvcmQtY2hlY2tlci5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQYXNzd29yZENoZWNrZXJMaWJEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXG4gIGV4cG9ydHM6IFtQYXNzd29yZENoZWNrZXJMaWJEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkQ2hlY2tlck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogUGFydGlhbDxQYXNzd29yZENoZWNrZXJDb25maWc+ID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFBhc3N3b3JkQ2hlY2tlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogUGFzc3dvcmRDaGVja2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBQYXNzd29yZENoZWNrZXJDb25maWdWYWx1ZSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const PasswordCheckerConfigValue = new InjectionToken('PASSWORD_CHECKER_CONFIG');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY2hlY2tlci5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJpYW5ndWxhci9wYXNzd29yZC1jaGVja2VyLyIsInNvdXJjZXMiOlsibGliL3Bhc3N3b3JkLWNoZWNrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFZN0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQWlDLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBUW1BdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZENoZWNrZXJDb25maWcge1xuICBwd25lZFBhc3N3b3JkQXBpOiBzdHJpbmc7XG4gIHB3bmVkUGFzc3dvcmRNaW5pbXVtT2NjdXJyZW5jZUZvckVycm9yOiBudW1iZXI7XG4gIHB3bmVkUGFzc3dvcmRBcGlDYWxsRGVib3VuY2VUaW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBQYXNzd29yZENoZWNrZXJDb25maWdWYWx1ZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQYXJ0aWFsPFBhc3N3b3JkQ2hlY2tlckNvbmZpZz4+KCdQQVNTV09SRF9DSEVDS0VSX0NPTkZJRycpO1xuIl19
|
package/esm2015/public_api.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of password-checker-lib
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/password-checker-lib.directive';
|
|
5
|
-
export * from './lib/password-checker-lib.module';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0cmlhbmd1bGFyL3Bhc3N3b3JkLWNoZWNrZXIvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBwYXNzd29yZC1jaGVja2VyLWxpYlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Bhc3N3b3JkLWNoZWNrZXItbGliLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYXNzd29yZC1jaGVja2VyLWxpYi5tb2R1bGUnO1xuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
export { PasswordCheckerConfigValue as ɵb } from './lib/password-checker.config';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpYW5ndWxhci1wYXNzd29yZC1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRyaWFuZ3VsYXIvcGFzc3dvcmQtY2hlY2tlci8iLCJzb3VyY2VzIjpbInRyaWFuZ3VsYXItcGFzc3dvcmQtY2hlY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBZSwwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtQYXJ0aWFsIGFzIMm1YSxQYXNzd29yZENoZWNrZXJDb25maWdWYWx1ZSBhcyDJtWJ9IGZyb20gJy4vbGliL3Bhc3N3b3JkLWNoZWNrZXIuY29uZmlnJzsiXX0=
|