@pipeline-builder/pipeline-core 3.4.67 → 3.4.68
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.
|
@@ -74,7 +74,7 @@ export interface AuthConfig {
|
|
|
74
74
|
readonly expiresIn: number;
|
|
75
75
|
/** Signing algorithm, e.g. `'HS256'` (env: `JWT_ALGORITHM`). */
|
|
76
76
|
readonly algorithm: Algorithm;
|
|
77
|
-
/** bcrypt salt rounds for password hashing (env: `
|
|
77
|
+
/** bcrypt salt rounds for password hashing (env: `BCRYPT_SALT_ROUNDS`). */
|
|
78
78
|
readonly saltRounds: number;
|
|
79
79
|
};
|
|
80
80
|
readonly refreshToken: {
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgSldUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRpc0NvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxka2l0ZCBzb2NrZXQgdGhlIHBsdWdpbidzIGBidWlsZGN0bGAgY29ubmVjdHMgdG8uIEluIGs4c1xuICAgKiBhbmQgY29tcG9zZSB0aGlzIGlzIGEgc2hhcmVkIGVtcHR5RGlyL3RtcGZzIHZvbHVtZSBtb3VudGVkIGZyb20gdGhlXG4gICAqIGJ1aWxka2l0ZCBzaWRlY2FyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRraXRBZGRyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NvbmZpZyB7XG4gIHJlYWRvbmx5IGxhbWJkYToge1xuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWU7XG4gICAgcmVhZG9ubHkgdGltZW91dDogRHVyYXRpb247XG4gICAgcmVhZG9ubHkgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG4gICAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgcmVhZG9ubHkgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGxhbnM6IHJlYWRvbmx5IEJpbGxpbmdQbGFuQ29uZmlnW107XG59XG4iXX0=
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgQkNSWVBUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRpc0NvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxka2l0ZCBzb2NrZXQgdGhlIHBsdWdpbidzIGBidWlsZGN0bGAgY29ubmVjdHMgdG8uIEluIGs4c1xuICAgKiBhbmQgY29tcG9zZSB0aGlzIGlzIGEgc2hhcmVkIGVtcHR5RGlyL3RtcGZzIHZvbHVtZSBtb3VudGVkIGZyb20gdGhlXG4gICAqIGJ1aWxka2l0ZCBzaWRlY2FyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRraXRBZGRyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NvbmZpZyB7XG4gIHJlYWRvbmx5IGxhbWJkYToge1xuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWU7XG4gICAgcmVhZG9ubHkgdGltZW91dDogRHVyYXRpb247XG4gICAgcmVhZG9ubHkgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG4gICAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgcmVhZG9ubHkgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGxhbnM6IHJlYWRvbmx5IEJpbGxpbmdQbGFuQ29uZmlnW107XG59XG4iXX0=
|
|
@@ -20,7 +20,7 @@ export declare function loadServerConfig(): ServerConfig;
|
|
|
20
20
|
* - `REFRESH_TOKEN_SECRET` — **Required.** Secret key for signing refresh tokens
|
|
21
21
|
* - `JWT_EXPIRES_IN` — JWT lifetime in seconds (default: `7200` = 2 hours)
|
|
22
22
|
* - `JWT_ALGORITHM` — JWT signing algorithm (default: `'HS256'`)
|
|
23
|
-
* - `
|
|
23
|
+
* - `BCRYPT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
|
|
24
24
|
* - `REFRESH_TOKEN_EXPIRES_IN` — Refresh token lifetime in seconds (default: `2592000` = 30 days)
|
|
25
25
|
*
|
|
26
26
|
* @returns Authentication configuration with safe defaults (empty strings when env vars are unset).
|
|
@@ -66,7 +66,7 @@ function loadServerConfig() {
|
|
|
66
66
|
* - `REFRESH_TOKEN_SECRET` — **Required.** Secret key for signing refresh tokens
|
|
67
67
|
* - `JWT_EXPIRES_IN` — JWT lifetime in seconds (default: `7200` = 2 hours)
|
|
68
68
|
* - `JWT_ALGORITHM` — JWT signing algorithm (default: `'HS256'`)
|
|
69
|
-
* - `
|
|
69
|
+
* - `BCRYPT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
|
|
70
70
|
* - `REFRESH_TOKEN_EXPIRES_IN` — Refresh token lifetime in seconds (default: `2592000` = 30 days)
|
|
71
71
|
*
|
|
72
72
|
* @returns Authentication configuration with safe defaults (empty strings when env vars are unset).
|
|
@@ -78,7 +78,7 @@ function loadAuthConfig() {
|
|
|
78
78
|
secret: process.env.JWT_SECRET ?? '',
|
|
79
79
|
expiresIn: parseInt(process.env.JWT_EXPIRES_IN || '7200', 10),
|
|
80
80
|
algorithm: (process.env.JWT_ALGORITHM || 'HS256'),
|
|
81
|
-
saltRounds: parseInt(process.env.
|
|
81
|
+
saltRounds: parseInt(process.env.BCRYPT_SALT_ROUNDS || '12', 10),
|
|
82
82
|
},
|
|
83
83
|
refreshToken: {
|
|
84
84
|
secret: process.env.REFRESH_TOKEN_SECRET || '',
|
|
@@ -177,4 +177,4 @@ function validateAuthConfig(config) {
|
|
|
177
177
|
throw new Error(`Auth configuration validation failed:\n${errors.map(e => ` - ${e}`).join('\n')}`);
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFxQnRDLDRDQXNDQztBQWdCRCx3Q0FhQztBQVdELGtEQU9DO0FBT0Qsb0RBNEJDO0FBZ0JELGdEQXNDQztBQWpNRCx5REFBMEQ7QUFFMUQsNkNBQTZDO0FBRzdDLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxlQUFlLENBQUMsQ0FBQztBQUUxQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksMEJBQWEsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRTtRQUNELFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN4RCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSwwQkFBYSxDQUFDLG9CQUFvQjtRQUVoRixVQUFVLEVBQUU7WUFDVixP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QUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbGdvcml0aG0gfSBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4vYXBwLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckNvbmZpZywgQXV0aENvbmZpZywgUmF0ZUxpbWl0Q29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMnO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3NlcnZlci1jb25maWcnKTtcblxuLyoqXG4gKiBMb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYFBPUlRgIOKAlCBIVFRQIGxpc3RlbiBwb3J0IChkZWZhdWx0OiBgMzAwMGApXG4gKiAtIGBDT1JTX09SSUdJTmAg4oCUIENvbW1hLXNlcGFyYXRlZCBhbGxvd2VkIG9yaWdpbnMgKGRlZmF1bHQ6IGBQTEFURk9STV9CQVNFX1VSTGApXG4gKiAtIGBDT1JTX0NSRURFTlRJQUxTYCDigJQgQWxsb3cgY3JlZGVudGlhbHM7IHNldCB0byBgJ2ZhbHNlJ2AgdG8gZGlzYWJsZSAoZGVmYXVsdDogYHRydWVgKVxuICogLSBgVFJVU1RfUFJPWFlgIOKAlCBFeHByZXNzIHRydXN0IHByb3h5IGhvcHMgKGRlZmF1bHQ6IGAxYClcbiAqIC0gYFBMQVRGT1JNX0JBU0VfVVJMYCDigJQgRnJvbnRlbmQgVVJMIHVzZWQgYXMgQ09SUyBmYWxsYmFjayAoZGVmYXVsdDogYCdodHRwczovL2xvY2FsaG9zdDo4NDQzJ2ApXG4gKlxuICogQHJldHVybnMgU2VydmVyIGNvbmZpZ3VyYXRpb24gd2l0aCBwb3J0LCBDT1JTLCB0cnVzdCBwcm94eSwgYW5kIHBsYXRmb3JtIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNlcnZlckNvbmZpZygpOiBTZXJ2ZXJDb25maWcge1xuICByZXR1cm4ge1xuICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgY29yczoge1xuICAgICAgY3JlZGVudGlhbHM6IHByb2Nlc3MuZW52LkNPUlNfQ1JFREVOVElBTFMgIT09ICdmYWxzZScsXG4gICAgICBvcmlnaW46IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOXG4gICAgICAgID8gcHJvY2Vzcy5lbnYuQ09SU19PUklHSU4uc3BsaXQoJywnKS5tYXAobyA9PiBvLnRyaW0oKSlcbiAgICAgICAgOiBbcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTF0sXG4gICAgfSxcbiAgICB0cnVzdFByb3h5OiBwYXJzZUludChwcm9jZXNzLmVudi5UUlVTVF9QUk9YWSB8fCAnMScsIDEwKSxcbiAgICBwbGF0Zm9ybVVybDogcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTCxcblxuICAgIGh0dHBDbGllbnQ6IHtcbiAgICAgIHRpbWVvdXQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgICBtYXhSZXRyaWVzOiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9NQVhfUkVUUklFUyB8fCAnMicsIDEwKSxcbiAgICAgIHJldHJ5RGVsYXlNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfUkVUUllfREVMQVlfTVMgfHwgJzIwMCcsIDEwKSxcbiAgICB9LFxuXG4gICAgc3NlOiB7XG4gICAgICBtYXhDbGllbnRzUGVyUmVxdWVzdDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX01BWF9DTElFTlRTX1BFUl9SRVFVRVNUIHx8ICcxMCcsIDEwKSxcbiAgICAgIGNsaWVudFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0NMSUVOVF9USU1FT1VUX01TIHx8ICcxODAwMDAwJywgMTApLFxuICAgICAgY2xlYW51cEludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTEVBTlVQX0lOVEVSVkFMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNlcnZpY2VzOiB7XG4gICAgICBwbHVnaW5Ib3N0OiBwcm9jZXNzLmVudi5QTFVHSU5fU0VSVklDRV9IT1NUIHx8ICdwbHVnaW4nLFxuICAgICAgcGx1Z2luUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIHBpcGVsaW5lSG9zdDogcHJvY2Vzcy5lbnYuUElQRUxJTkVfU0VSVklDRV9IT1NUIHx8ICdwaXBlbGluZScsXG4gICAgICBwaXBlbGluZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2VIb3N0OiBwcm9jZXNzLmVudi5NRVNTQUdFX1NFUlZJQ0VfSE9TVCB8fCAnbWVzc2FnZScsXG4gICAgICBtZXNzYWdlUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBjb21wbGlhbmNlSG9zdDogcHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX0hPU1QgfHwgJ2NvbXBsaWFuY2UnLFxuICAgICAgY29tcGxpYW5jZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgYmlsbGluZ0hvc3Q6IHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9IT1NUIHx8ICdiaWxsaW5nJyxcbiAgICAgIGJpbGxpbmdQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdUaW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfVElNRU9VVCB8fCAnNTAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBKV1RfU0VDUkVUYCDigJQgKipSZXF1aXJlZC4qKiBTZWNyZXQga2V5IGZvciBzaWduaW5nIEpXVHNcbiAqIC0gYFJFRlJFU0hfVE9LRU5fU0VDUkVUYCDigJQgKipSZXF1aXJlZC4qKiBTZWNyZXQga2V5IGZvciBzaWduaW5nIHJlZnJlc2ggdG9rZW5zXG4gKiAtIGBKV1RfRVhQSVJFU19JTmAg4oCUIEpXVCBsaWZldGltZSBpbiBzZWNvbmRzIChkZWZhdWx0OiBgNzIwMGAgPSAyIGhvdXJzKVxuICogLSBgSldUX0FMR09SSVRITWAg4oCUIEpXVCBzaWduaW5nIGFsZ29yaXRobSAoZGVmYXVsdDogYCdIUzI1NidgKVxuICogLSBgSldUX1NBTFRfUk9VTkRTYCDigJQgYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChkZWZhdWx0OiBgMTJgKVxuICogLSBgUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOYCDigJQgUmVmcmVzaCB0b2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChkZWZhdWx0OiBgMjU5MjAwMGAgPSAzMCBkYXlzKVxuICpcbiAqIEByZXR1cm5zIEF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gd2l0aCBzYWZlIGRlZmF1bHRzIChlbXB0eSBzdHJpbmdzIHdoZW4gZW52IHZhcnMgYXJlIHVuc2V0KS5cbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlQXV0aENvbmZpZ30gYXQgc2VydmVyIHN0YXJ0dXAgdG8gZW5mb3JjZSByZXF1aXJlZCBzZWNyZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEF1dGhDb25maWcoKTogQXV0aENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgand0OiB7XG4gICAgICBzZWNyZXQ6IHByb2Nlc3MuZW52LkpXVF9TRUNSRVQgPz8gJycsXG4gICAgICBleHBpcmVzSW46IHBhcnNlSW50KHByb2Nlc3MuZW52LkpXVF9FWFBJUkVTX0lOIHx8ICc3MjAwJywgMTApLFxuICAgICAgYWxnb3JpdGhtOiAocHJvY2Vzcy5lbnYuSldUX0FMR09SSVRITSB8fCAnSFMyNTYnKSBhcyBBbGdvcml0aG0sXG4gICAgICBzYWx0Um91bmRzOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfU0FMVF9ST1VORFMgfHwgJzEyJywgMTApLFxuICAgIH0sXG4gICAgcmVmcmVzaFRva2VuOiB7XG4gICAgICBzZWNyZXQ6IHByb2Nlc3MuZW52LlJFRlJFU0hfVE9LRU5fU0VDUkVUIHx8ICcnLFxuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5SRUZSRVNIX1RPS0VOX0VYUElSRVNfSU4gfHwgJzI1OTIwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBMSU1JVEVSX01BWGAg4oCUIE1heCByZXF1ZXN0cyBwZXIgd2luZG93IChkZWZhdWx0OiBgMTAwYClcbiAqIC0gYExJTUlURVJfV0lORE9XTVNgIOKAlCBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtcyAoZGVmYXVsdDogYDkwMDAwMGAgPSAxNSBtaW51dGVzKVxuICpcbiAqIEByZXR1cm5zIFJhdGUgbGltaXQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJhdGVMaW1pdENvbmZpZygpOiBSYXRlTGltaXRDb25maWcge1xuICByZXR1cm4ge1xuICAgIG1heDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTElNSVRFUl9NQVggfHwgJzEwMCcsIDEwKSxcbiAgICB3aW5kb3dNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTElNSVRFUl9XSU5ET1dNUyB8fCAnOTAwMDAwJywgMTApLFxuICAgIGxlZ2FjeUhlYWRlcnM6IGZhbHNlLFxuICAgIHN0YW5kYXJkSGVhZGVyczogdHJ1ZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgbG9nIHdhcm5pbmdzIGZvciBpbnNlY3VyZSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyQ29uZmlnKGNvbmZpZzogU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIENPUlMgY29uZmlndXJhdGlvblxuICBjb25zdCBvcmlnaW4gPSBjb25maWcuY29ycy5vcmlnaW47XG4gIGNvbnN0IGlzV2lsZGNhcmQgPSBvcmlnaW4gPT09ICcqJyB8fCAoQXJyYXkuaXNBcnJheShvcmlnaW4pICYmIG9yaWdpbi5pbmNsdWRlcygnKicpKTtcbiAgaWYgKGlzV2lsZGNhcmQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdDT1JTIG9yaWdpbiBzZXQgdG8gd2lsZGNhcmQgKCopIC0gY29uc2lkZXIgcmVzdHJpY3RpbmcgdG8gc3BlY2lmaWMgZG9tYWlucycpO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkICYmIGNvbmZpZy5jb3JzLmNyZWRlbnRpYWxzKSB7XG4gICAgLy8gQnJvd3NlcnMgcmVqZWN0IHRoaXMgY29tYmluYXRpb24sIGJ1dCBpdCBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1NFQ1VSSVRZIEVSUk9SOiBDT1JTX09SSUdJTj0qIHdpdGggQ09SU19DUkVERU5USUFMUz10cnVlIGlzIGFuIGludmFsaWQgYW5kIGluc2VjdXJlIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgJ1NldCBDT1JTX09SSUdJTiB0byBzcGVjaWZpYyBkb21haW5zIG9yIGRpc2FibGUgQ09SU19DUkVERU5USUFMUy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBwbGF0Zm9ybSBVUkwgdXNlcyBIVFRQU1xuICBpZiAoY29uZmlnLnBsYXRmb3JtVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICFjb25maWcucGxhdGZvcm1VcmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUGxhdGZvcm0gVVJMIHVzZXMgSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIC0gaW5zZWN1cmUgZm9yIHByb2R1Y3Rpb24nKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6Jyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IGxvZy53YXJuKGAgIC0gJHt3YXJuaW5nfWApKTtcbiAgfVxufVxuXG5jb25zdCBJTlNFQ1VSRV9QQVRURVJOUyA9IFsnc2VjcmV0JywgJ3Bhc3N3b3JkJywgJ2NoYW5nZW1lJywgJ2RlZmF1bHQnLCAnMTIzNDU2JywgJ2FkbWluJ107XG5cbmZ1bmN0aW9uIGlzSW5zZWN1cmVTZWNyZXQoc2VjcmV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbG93ZXIgPSBzZWNyZXQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIElOU0VDVVJFX1BBVFRFUk5TLnNvbWUocyA9PiBsb3dlciA9PT0gcyB8fCAobG93ZXIubGVuZ3RoIDwgNjQgJiYgbG93ZXIuaW5jbHVkZXMocykpKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIChKV1Qgc2VjcmV0cywgYWxnb3JpdGhtcywgZXhwaXJhdGlvbikuXG4gKiBDYWxsIHRoaXMgYXQgc2VydmVyIHN0YXJ0dXAsIG5vdCBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gQXV0aCBjb25maWd1cmF0aW9uIHRvIHZhbGlkYXRlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2VjcmV0cyBhcmUgaW5zZWN1cmUsIHRvbyBzaG9ydCAoPDMyIGNoYXJzKSwgb3IgdXNlIGRpc2FsbG93ZWQgYWxnb3JpdGhtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBdXRoQ29uZmlnKGNvbmZpZzogQXV0aENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIFZhbGlkYXRlIGJvdGggc2VjcmV0cyB3aXRoIHRoZSBzYW1lIGNoZWNrc1xuICBmb3IgKGNvbnN0IFtsYWJlbCwgc2VjcmV0XSBvZiBbWydKV1QnLCBjb25maWcuand0LnNlY3JldF0sIFsnUmVmcmVzaCB0b2tlbicsIGNvbmZpZy5yZWZyZXNoVG9rZW4uc2VjcmV0XV0gYXMgY29uc3QpIHtcbiAgICBpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtsYWJlbH0gc2VjcmV0IHNob3VsZCBiZSBhdCBsZWFzdCAzMiBjaGFyYWN0ZXJzIGxvbmdgKTtcbiAgICB9XG4gICAgaWYgKGlzSW5zZWN1cmVTZWNyZXQoc2VjcmV0KSkge1xuICAgICAgZXJyb3JzLnB1c2goYCR7bGFiZWx9IHNlY3JldCBhcHBlYXJzIHRvIGJlIGluc2VjdXJlIG9yIGRlZmF1bHQgdmFsdWVgKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBKV1QgZXhwaXJhdGlvbiB0aW1lc1xuICBpZiAoY29uZmlnLmp3dC5leHBpcmVzSW4gPiA4NjQwMCkge1xuICAgIGVycm9ycy5wdXNoKCdKV1QgZXhwaXJhdGlvbiBtdXN0IG5vdCBleGNlZWQgMjQgaG91cnMgKDg2NDAwIHNlY29uZHMpJyk7XG4gIH0gZWxzZSBpZiAoY29uZmlnLmp3dC5leHBpcmVzSW4gPiA3MjAwKSB7XG4gICAgd2FybmluZ3MucHVzaCgnSldUIGV4cGlyYXRpb24gdGltZSBpcyBncmVhdGVyIHRoYW4gMiBob3VycyAtIHNob3J0ZXIgZXhwaXJhdGlvbiByZWNvbW1lbmRlZCcpO1xuICB9XG5cbiAgLy8gQ2hlY2sgYWxnb3JpdGhtXG4gIGlmICghQ29yZUNvbnN0YW50cy5BTExPV0VEX0pXVF9BTEdPUklUSE1TLmluY2x1ZGVzKGNvbmZpZy5qd3QuYWxnb3JpdGhtKSkge1xuICAgIGVycm9ycy5wdXNoKGBKV1QgYWxnb3JpdGhtICR7Y29uZmlnLmp3dC5hbGdvcml0aG19IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCBsaXN0YCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oJ0F1dGggY29uZmlndXJhdGlvbiB3YXJuaW5nczonKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gbG9nLndhcm4oYCAgLSAke3dhcm5pbmd9YCkpO1xuICB9XG5cbiAgLy8gVGhyb3cgZXJyb3JzXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBdXRoIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ6XFxuJHtlcnJvcnMubWFwKGUgPT4gYCAgLSAke2V9YCkuam9pbignXFxuJyl9YCxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFxQnRDLDRDQXNDQztBQWdCRCx3Q0FhQztBQVdELGtEQU9DO0FBT0Qsb0RBNEJDO0FBZ0JELGdEQXNDQztBQWpNRCx5REFBMEQ7QUFFMUQsNkNBQTZDO0FBRzdDLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxlQUFlLENBQUMsQ0FBQztBQUUxQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksMEJBQWEsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRTtRQUNELFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN4RCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSwwQkFBYSxDQUFDLG9CQUFvQjtRQUVoRixVQUFVLEVBQUU7WUFDVixP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RUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25GLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEFsZ29yaXRobSB9IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi9hcHAtY29uZmlnJztcbmltcG9ydCB0eXBlIHsgU2VydmVyQ29uZmlnLCBBdXRoQ29uZmlnLCBSYXRlTGltaXRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcyc7XG5cbmNvbnN0IGxvZyA9IGNyZWF0ZUxvZ2dlcignc2VydmVyLWNvbmZpZycpO1xuXG4vKipcbiAqIExvYWQgc2VydmVyIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgUE9SVGAg4oCUIEhUVFAgbGlzdGVuIHBvcnQgKGRlZmF1bHQ6IGAzMDAwYClcbiAqIC0gYENPUlNfT1JJR0lOYCDigJQgQ29tbWEtc2VwYXJhdGVkIGFsbG93ZWQgb3JpZ2lucyAoZGVmYXVsdDogYFBMQVRGT1JNX0JBU0VfVVJMYClcbiAqIC0gYENPUlNfQ1JFREVOVElBTFNgIOKAlCBBbGxvdyBjcmVkZW50aWFsczsgc2V0IHRvIGAnZmFsc2UnYCB0byBkaXNhYmxlIChkZWZhdWx0OiBgdHJ1ZWApXG4gKiAtIGBUUlVTVF9QUk9YWWAg4oCUIEV4cHJlc3MgdHJ1c3QgcHJveHkgaG9wcyAoZGVmYXVsdDogYDFgKVxuICogLSBgUExBVEZPUk1fQkFTRV9VUkxgIOKAlCBGcm9udGVuZCBVUkwgdXNlZCBhcyBDT1JTIGZhbGxiYWNrIChkZWZhdWx0OiBgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnYClcbiAqXG4gKiBAcmV0dXJucyBTZXJ2ZXIgY29uZmlndXJhdGlvbiB3aXRoIHBvcnQsIENPUlMsIHRydXN0IHByb3h5LCBhbmQgcGxhdGZvcm0gVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2VydmVyQ29uZmlnKCk6IFNlcnZlckNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgcG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICBjb3JzOiB7XG4gICAgICBjcmVkZW50aWFsczogcHJvY2Vzcy5lbnYuQ09SU19DUkVERU5USUFMUyAhPT0gJ2ZhbHNlJyxcbiAgICAgIG9yaWdpbjogcHJvY2Vzcy5lbnYuQ09SU19PUklHSU5cbiAgICAgICAgPyBwcm9jZXNzLmVudi5DT1JTX09SSUdJTi5zcGxpdCgnLCcpLm1hcChvID0+IG8udHJpbSgpKVxuICAgICAgICA6IFtwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCBDb3JlQ29uc3RhbnRzLkRFRkFVTFRfUExBVEZPUk1fVVJMXSxcbiAgICB9LFxuICAgIHRydXN0UHJveHk6IHBhcnNlSW50KHByb2Nlc3MuZW52LlRSVVNUX1BST1hZIHx8ICcxJywgMTApLFxuICAgIHBsYXRmb3JtVXJsOiBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCBDb3JlQ29uc3RhbnRzLkRFRkFVTFRfUExBVEZPUk1fVVJMLFxuXG4gICAgaHR0cENsaWVudDoge1xuICAgICAgdGltZW91dDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfVElNRU9VVCB8fCAnNTAwMCcsIDEwKSxcbiAgICAgIG1heFJldHJpZXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX01BWF9SRVRSSUVTIHx8ICcyJywgMTApLFxuICAgICAgcmV0cnlEZWxheU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9SRVRSWV9ERUxBWV9NUyB8fCAnMjAwJywgMTApLFxuICAgIH0sXG5cbiAgICBzc2U6IHtcbiAgICAgIG1heENsaWVudHNQZXJSZXF1ZXN0OiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfTUFYX0NMSUVOVFNfUEVSX1JFUVVFU1QgfHwgJzEwJywgMTApLFxuICAgICAgY2xpZW50VGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfQ0xJRU5UX1RJTUVPVVRfTVMgfHwgJzE4MDAwMDAnLCAxMCksXG4gICAgICBjbGVhbnVwSW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0NMRUFOVVBfSU5URVJWQUxfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICB9LFxuXG4gICAgc2VydmljZXM6IHtcbiAgICAgIHBsdWdpbkhvc3Q6IHByb2Nlc3MuZW52LlBMVUdJTl9TRVJWSUNFX0hPU1QgfHwgJ3BsdWdpbicsXG4gICAgICBwbHVnaW5Qb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgcGlwZWxpbmVIb3N0OiBwcm9jZXNzLmVudi5QSVBFTElORV9TRVJWSUNFX0hPU1QgfHwgJ3BpcGVsaW5lJyxcbiAgICAgIHBpcGVsaW5lUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUElQRUxJTkVfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgbWVzc2FnZUhvc3Q6IHByb2Nlc3MuZW52Lk1FU1NBR0VfU0VSVklDRV9IT1NUIHx8ICdtZXNzYWdlJyxcbiAgICAgIG1lc3NhZ2VQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5NRVNTQUdFX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGNvbXBsaWFuY2VIb3N0OiBwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfSE9TVCB8fCAnY29tcGxpYW5jZScsXG4gICAgICBjb21wbGlhbmNlUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBiaWxsaW5nSG9zdDogcHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX0hPU1QgfHwgJ2JpbGxpbmcnLFxuICAgICAgYmlsbGluZ1BvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgYmlsbGluZ1RpbWVvdXQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9USU1FT1VUIHx8ICc1MDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYEpXVF9TRUNSRVRgIOKAlCAqKlJlcXVpcmVkLioqIFNlY3JldCBrZXkgZm9yIHNpZ25pbmcgSldUc1xuICogLSBgUkVGUkVTSF9UT0tFTl9TRUNSRVRgIOKAlCAqKlJlcXVpcmVkLioqIFNlY3JldCBrZXkgZm9yIHNpZ25pbmcgcmVmcmVzaCB0b2tlbnNcbiAqIC0gYEpXVF9FWFBJUkVTX0lOYCDigJQgSldUIGxpZmV0aW1lIGluIHNlY29uZHMgKGRlZmF1bHQ6IGA3MjAwYCA9IDIgaG91cnMpXG4gKiAtIGBKV1RfQUxHT1JJVEhNYCDigJQgSldUIHNpZ25pbmcgYWxnb3JpdGhtIChkZWZhdWx0OiBgJ0hTMjU2J2ApXG4gKiAtIGBCQ1JZUFRfU0FMVF9ST1VORFNgIOKAlCBiY3J5cHQgc2FsdCByb3VuZHMgZm9yIHBhc3N3b3JkIGhhc2hpbmcgKGRlZmF1bHQ6IGAxMmApXG4gKiAtIGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gIOKAlCBSZWZyZXNoIHRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGRlZmF1bHQ6IGAyNTkyMDAwYCA9IDMwIGRheXMpXG4gKlxuICogQHJldHVybnMgQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiB3aXRoIHNhZmUgZGVmYXVsdHMgKGVtcHR5IHN0cmluZ3Mgd2hlbiBlbnYgdmFycyBhcmUgdW5zZXQpLlxuICogQ2FsbCB7QGxpbmsgdmFsaWRhdGVBdXRoQ29uZmlnfSBhdCBzZXJ2ZXIgc3RhcnR1cCB0byBlbmZvcmNlIHJlcXVpcmVkIHNlY3JldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXV0aENvbmZpZygpOiBBdXRoQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBqd3Q6IHtcbiAgICAgIHNlY3JldDogcHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCA/PyAnJyxcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSldUX0VYUElSRVNfSU4gfHwgJzcyMDAnLCAxMCksXG4gICAgICBhbGdvcml0aG06IChwcm9jZXNzLmVudi5KV1RfQUxHT1JJVEhNIHx8ICdIUzI1NicpIGFzIEFsZ29yaXRobSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIHNlY3JldDogcHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9TRUNSRVQgfHwgJycsXG4gICAgICBleHBpcmVzSW46IHBhcnNlSW50KHByb2Nlc3MuZW52LlJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTiB8fCAnMjU5MjAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgcmF0ZSBsaW1pdGluZyBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYExJTUlURVJfTUFYYCDigJQgTWF4IHJlcXVlc3RzIHBlciB3aW5kb3cgKGRlZmF1bHQ6IGAxMDBgKVxuICogLSBgTElNSVRFUl9XSU5ET1dNU2Ag4oCUIFJhdGUgbGltaXQgd2luZG93IGluIG1zIChkZWZhdWx0OiBgOTAwMDAwYCA9IDE1IG1pbnV0ZXMpXG4gKlxuICogQHJldHVybnMgUmF0ZSBsaW1pdCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmF0ZUxpbWl0Q29uZmlnKCk6IFJhdGVMaW1pdENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbWF4OiBwYXJzZUludChwcm9jZXNzLmVudi5MSU1JVEVSX01BWCB8fCAnMTAwJywgMTApLFxuICAgIHdpbmRvd01zOiBwYXJzZUludChwcm9jZXNzLmVudi5MSU1JVEVSX1dJTkRPV01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgbGVnYWN5SGVhZGVyczogZmFsc2UsXG4gICAgc3RhbmRhcmRIZWFkZXJzOiB0cnVlLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNlcnZlciBjb25maWd1cmF0aW9uIGFuZCBsb2cgd2FybmluZ3MgZm9yIGluc2VjdXJlIHNldHRpbmdzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBTZXJ2ZXIgY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTZXJ2ZXJDb25maWcoY29uZmlnOiBTZXJ2ZXJDb25maWcpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgQ09SUyBjb25maWd1cmF0aW9uXG4gIGNvbnN0IG9yaWdpbiA9IGNvbmZpZy5jb3JzLm9yaWdpbjtcbiAgY29uc3QgaXNXaWxkY2FyZCA9IG9yaWdpbiA9PT0gJyonIHx8IChBcnJheS5pc0FycmF5KG9yaWdpbikgJiYgb3JpZ2luLmluY2x1ZGVzKCcqJykpO1xuICBpZiAoaXNXaWxkY2FyZCkge1xuICAgIHdhcm5pbmdzLnB1c2goJ0NPUlMgb3JpZ2luIHNldCB0byB3aWxkY2FyZCAoKikgLSBjb25zaWRlciByZXN0cmljdGluZyB0byBzcGVjaWZpYyBkb21haW5zJyk7XG4gIH1cbiAgaWYgKGlzV2lsZGNhcmQgJiYgY29uZmlnLmNvcnMuY3JlZGVudGlhbHMpIHtcbiAgICAvLyBCcm93c2VycyByZWplY3QgdGhpcyBjb21iaW5hdGlvbiwgYnV0IGl0IGluZGljYXRlcyBhIG1pc2NvbmZpZ3VyYXRpb25cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnU0VDVVJJVFkgRVJST1I6IENPUlNfT1JJR0lOPSogd2l0aCBDT1JTX0NSRURFTlRJQUxTPXRydWUgaXMgYW4gaW52YWxpZCBhbmQgaW5zZWN1cmUgY29uZmlndXJhdGlvbi4gJyArXG4gICAgICAnU2V0IENPUlNfT1JJR0lOIHRvIHNwZWNpZmljIGRvbWFpbnMgb3IgZGlzYWJsZSBDT1JTX0NSRURFTlRJQUxTLicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrIHBsYXRmb3JtIFVSTCB1c2VzIEhUVFBTXG4gIGlmIChjb25maWcucGxhdGZvcm1Vcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpICYmXG4gICAgIWNvbmZpZy5wbGF0Zm9ybVVybC5pbmNsdWRlcygnbG9jYWxob3N0JykpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdQbGF0Zm9ybSBVUkwgdXNlcyBIVFRQIGluc3RlYWQgb2YgSFRUUFMgLSBpbnNlY3VyZSBmb3IgcHJvZHVjdGlvbicpO1xuICB9XG5cbiAgLy8gRGlzcGxheSB3YXJuaW5nc1xuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIGxvZy53YXJuKCdTZXJ2ZXIgY29uZmlndXJhdGlvbiB3YXJuaW5nczonKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gbG9nLndhcm4oYCAgLSAke3dhcm5pbmd9YCkpO1xuICB9XG59XG5cbmNvbnN0IElOU0VDVVJFX1BBVFRFUk5TID0gWydzZWNyZXQnLCAncGFzc3dvcmQnLCAnY2hhbmdlbWUnLCAnZGVmYXVsdCcsICcxMjM0NTYnLCAnYWRtaW4nXTtcblxuZnVuY3Rpb24gaXNJbnNlY3VyZVNlY3JldChzZWNyZXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBsb3dlciA9IHNlY3JldC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gSU5TRUNVUkVfUEFUVEVSTlMuc29tZShzID0+IGxvd2VyID09PSBzIHx8IChsb3dlci5sZW5ndGggPCA2NCAmJiBsb3dlci5pbmNsdWRlcyhzKSkpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gKEpXVCBzZWNyZXRzLCBhbGdvcml0aG1zLCBleHBpcmF0aW9uKS5cbiAqIENhbGwgdGhpcyBhdCBzZXJ2ZXIgc3RhcnR1cCwgbm90IGR1cmluZyBDREsgc3ludGhlc2lzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBBdXRoIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzZWNyZXRzIGFyZSBpbnNlY3VyZSwgdG9vIHNob3J0ICg8MzIgY2hhcnMpLCBvciB1c2UgZGlzYWxsb3dlZCBhbGdvcml0aG1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF1dGhDb25maWcoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gVmFsaWRhdGUgYm90aCBzZWNyZXRzIHdpdGggdGhlIHNhbWUgY2hlY2tzXG4gIGZvciAoY29uc3QgW2xhYmVsLCBzZWNyZXRdIG9mIFtbJ0pXVCcsIGNvbmZpZy5qd3Quc2VjcmV0XSwgWydSZWZyZXNoIHRva2VuJywgY29uZmlnLnJlZnJlc2hUb2tlbi5zZWNyZXRdXSBhcyBjb25zdCkge1xuICAgIGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcbiAgICAgIGVycm9ycy5wdXNoKGAke2xhYmVsfSBzZWNyZXQgc2hvdWxkIGJlIGF0IGxlYXN0IDMyIGNoYXJhY3RlcnMgbG9uZ2ApO1xuICAgIH1cbiAgICBpZiAoaXNJbnNlY3VyZVNlY3JldChzZWNyZXQpKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtsYWJlbH0gc2VjcmV0IGFwcGVhcnMgdG8gYmUgaW5zZWN1cmUgb3IgZGVmYXVsdCB2YWx1ZWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIEpXVCBleHBpcmF0aW9uIHRpbWVzXG4gIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDg2NDAwKSB7XG4gICAgZXJyb3JzLnB1c2goJ0pXVCBleHBpcmF0aW9uIG11c3Qgbm90IGV4Y2VlZCAyNCBob3VycyAoODY0MDAgc2Vjb25kcyknKTtcbiAgfSBlbHNlIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDcyMDApIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdKV1QgZXhwaXJhdGlvbiB0aW1lIGlzIGdyZWF0ZXIgdGhhbiAyIGhvdXJzIC0gc2hvcnRlciBleHBpcmF0aW9uIHJlY29tbWVuZGVkJyk7XG4gIH1cblxuICAvLyBDaGVjayBhbGdvcml0aG1cbiAgaWYgKCFDb3JlQ29uc3RhbnRzLkFMTE9XRURfSldUX0FMR09SSVRITVMuaW5jbHVkZXMoY29uZmlnLmp3dC5hbGdvcml0aG0pKSB7XG4gICAgZXJyb3JzLnB1c2goYEpXVCBhbGdvcml0aG0gJHtjb25maWcuand0LmFsZ29yaXRobX0gaXMgbm90IGluIHRoZSBhbGxvd2VkIGxpc3RgKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignQXV0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cblxuICAvLyBUaHJvdyBlcnJvcnNcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEF1dGggY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17,9 +17,6 @@
|
|
|
17
17
|
* generate('plugin:lookup') → 'plugin:{hash}:lookup:2' (counter inc)
|
|
18
18
|
* generate('cdk:pipeline:1') → 'cdk:pipeline:1' (already counted)
|
|
19
19
|
*
|
|
20
|
-
* Format without org+project (backward compat):
|
|
21
|
-
* generate('plugin:lookup') → 'plugin:lookup:1'
|
|
22
|
-
*
|
|
23
20
|
* @example
|
|
24
21
|
* ```typescript
|
|
25
22
|
* const id = new UniqueId({ organization: 'AcmeCorp', project: 'spring-boot' });
|
|
@@ -30,14 +27,14 @@
|
|
|
30
27
|
*/
|
|
31
28
|
export interface UniqueIdOptions {
|
|
32
29
|
/** Organization name — combined with project to form the stack-identity hash. */
|
|
33
|
-
readonly organization
|
|
30
|
+
readonly organization: string;
|
|
34
31
|
/** Project name — combined with organization to form the stack-identity hash. */
|
|
35
|
-
readonly project
|
|
32
|
+
readonly project: string;
|
|
36
33
|
}
|
|
37
34
|
export declare class UniqueId {
|
|
38
35
|
private readonly _counters;
|
|
39
36
|
private readonly _stackId;
|
|
40
|
-
constructor(opts
|
|
37
|
+
constructor(opts: UniqueIdOptions);
|
|
41
38
|
/**
|
|
42
39
|
* Returns a unique construct ID for the given label.
|
|
43
40
|
* If the label already ends with a numeric counter, it is returned as-is.
|
|
@@ -48,6 +45,6 @@ export declare class UniqueId {
|
|
|
48
45
|
* @returns The label with hash + counter inserted
|
|
49
46
|
*/
|
|
50
47
|
generate(label: string): string;
|
|
51
|
-
/** The stack-identity hash
|
|
48
|
+
/** The stack-identity hash derived from organization + project. */
|
|
52
49
|
get stackId(): string;
|
|
53
50
|
}
|
package/lib/core/id-generator.js
CHANGED
|
@@ -7,18 +7,13 @@ const crypto_1 = require("crypto");
|
|
|
7
7
|
class UniqueId {
|
|
8
8
|
_counters = new Map();
|
|
9
9
|
_stackId;
|
|
10
|
-
constructor(opts
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.slice(0, 8);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this._stackId = '';
|
|
21
|
-
}
|
|
10
|
+
constructor(opts) {
|
|
11
|
+
// 8 hex chars = 32 bits = 1 in 4 billion collision odds across pipelines.
|
|
12
|
+
// Lowercased for case-insensitive stability ("AcmeCorp" === "acmecorp").
|
|
13
|
+
this._stackId = (0, crypto_1.createHash)('sha256')
|
|
14
|
+
.update(`${opts.project}:${opts.organization}`.toLowerCase())
|
|
15
|
+
.digest('hex')
|
|
16
|
+
.slice(0, 8);
|
|
22
17
|
}
|
|
23
18
|
/**
|
|
24
19
|
* Returns a unique construct ID for the given label.
|
|
@@ -39,9 +34,6 @@ class UniqueId {
|
|
|
39
34
|
}
|
|
40
35
|
const count = (this._counters.get(label) ?? 0) + 1;
|
|
41
36
|
this._counters.set(label, count);
|
|
42
|
-
if (!this._stackId) {
|
|
43
|
-
return `${label}:${count}`;
|
|
44
|
-
}
|
|
45
37
|
// Insert the stack hash after the first namespace segment so the leading
|
|
46
38
|
// category (`plugin`, `log`, `resource`, etc.) stays human-readable.
|
|
47
39
|
const idx = label.indexOf(':');
|
|
@@ -53,10 +45,10 @@ class UniqueId {
|
|
|
53
45
|
const tail = label.slice(idx + 1);
|
|
54
46
|
return `${head}:${this._stackId}:${tail}:${count}`;
|
|
55
47
|
}
|
|
56
|
-
/** The stack-identity hash
|
|
48
|
+
/** The stack-identity hash derived from organization + project. */
|
|
57
49
|
get stackId() {
|
|
58
50
|
return this._stackId;
|
|
59
51
|
}
|
|
60
52
|
}
|
|
61
53
|
exports.UniqueId = UniqueId;
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvaWQtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7QUFFdEMsbUNBQW9DO0FBb0NwQyxNQUFhLFFBQVE7SUFDRixTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDdEMsUUFBUSxDQUFTO0lBRWxDLFlBQVksSUFBcUI7UUFDL0IsMEVBQTBFO1FBQzFFLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUM7YUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNiLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMseUVBQXlFO1FBQ3pFLHFFQUFxRTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZiwwREFBMEQ7WUFDMUQsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQW5ERCw0QkFtREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHVuaXF1ZSBDREsgY29uc3RydWN0IElEcyBieSBhcHBlbmRpbmcgYXV0by1pbmNyZW1lbnRpbmcgY291bnRlcnNcbiAqIHRvIGxhYmVscywgd2l0aCBhbiBvcHRpb25hbCBzdGFjay1pZGVudGl0eSBoYXNoIGluc2VydGVkIGFmdGVyIHRoZSBmaXJzdFxuICogbmFtZXNwYWNlIHNlZ21lbnQgdG8gcHJldmVudCBjb2xsaXNpb25zIGFjcm9zcyBwaXBlbGluZXMvb3Jncy5cbiAqXG4gKiBXaHkgdGhlIGhhc2ggbWF0dGVyczpcbiAqICAgQVdTIHJlc291cmNlcyB3aXRoIGV4cGxpY2l0IG5hbWVzIChDbG91ZFdhdGNoIGxvZyBncm91cHMsIElBTSByb2xlcylcbiAqICAgY29sbGlkZSBpZiB0d28gQ0RLIHN0YWNrcyBnZW5lcmF0ZSB0aGUgc2FtZSBuYW1lLiBXaGVuIG9yZyBBJ3NcbiAqICAgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYW5kIG9yZyBCJ3Mgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYm90aCBkZXBsb3kgYVxuICogICBgcGx1Z2luLWxvb2t1cC0xYCBsb2cgZ3JvdXAsIHRoZSBzZWNvbmQgZGVwbG95IGZhaWxzIHdpdGhcbiAqICAgXCJSZXNvdXJjZSBhbHJlYWR5IGV4aXN0c1wiLiBUaGUgaGFzaCBtYWtlcyBlYWNoIChwcm9qZWN0LCBvcmcpIHBhaXJcbiAqICAgcHJvZHVjZSBhIHVuaXF1ZSBzdGFibGUgbmFtZSB3aXRob3V0IGNoYW5naW5nIHRoZSByZXN0IG9mIHRoZSBsYWJlbC5cbiAqXG4gKiBGb3JtYXQgd2l0aCBvcmcrcHJvamVjdDpcbiAqICAgZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKSAgIOKGkiAncGx1Z2luOntoYXNofTpsb29rdXA6MSdcbiAqICAgZ2VuZXJhdGUoJ2xvZzpncm91cCcpICAgICAgIOKGkiAnbG9nOntoYXNofTpncm91cDoxJ1xuICogICBnZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpICAg4oaSICdwbHVnaW46e2hhc2h9Omxvb2t1cDoyJyAgIChjb3VudGVyIGluYylcbiAqICAgZ2VuZXJhdGUoJ2NkazpwaXBlbGluZToxJykgIOKGkiAnY2RrOnBpcGVsaW5lOjEnICAgICAgICAgICAoYWxyZWFkeSBjb3VudGVkKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpZCA9IG5ldyBVbmlxdWVJZCh7IG9yZ2FuaXphdGlvbjogJ0FjbWVDb3JwJywgcHJvamVjdDogJ3NwcmluZy1ib290JyB9KTtcbiAqIGlkLmdlbmVyYXRlKCdwbHVnaW46bG9va3VwJyk7ICAgLy8gXCJwbHVnaW46YTFiMmMzZDQ6bG9va3VwOjFcIlxuICogaWQuZ2VuZXJhdGUoJ2xvZzpncm91cCcpOyAgICAgICAvLyBcImxvZzphMWIyYzNkNDpncm91cDoxXCJcbiAqIGlkLmdlbmVyYXRlKCdwbHVnaW46bG9va3VwJyk7ICAgLy8gXCJwbHVnaW46YTFiMmMzZDQ6bG9va3VwOjJcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlSWRPcHRpb25zIHtcbiAgLyoqIE9yZ2FuaXphdGlvbiBuYW1lIOKAlCBjb21iaW5lZCB3aXRoIHByb2plY3QgdG8gZm9ybSB0aGUgc3RhY2staWRlbnRpdHkgaGFzaC4gKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG4gIC8qKiBQcm9qZWN0IG5hbWUg4oCUIGNvbWJpbmVkIHdpdGggb3JnYW5pemF0aW9uIHRvIGZvcm0gdGhlIHN0YWNrLWlkZW50aXR5IGhhc2guICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFVuaXF1ZUlkIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY291bnRlcnMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFja0lkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0czogVW5pcXVlSWRPcHRpb25zKSB7XG4gICAgLy8gOCBoZXggY2hhcnMgPSAzMiBiaXRzID0gMSBpbiA0IGJpbGxpb24gY29sbGlzaW9uIG9kZHMgYWNyb3NzIHBpcGVsaW5lcy5cbiAgICAvLyBMb3dlcmNhc2VkIGZvciBjYXNlLWluc2Vuc2l0aXZlIHN0YWJpbGl0eSAoXCJBY21lQ29ycFwiID09PSBcImFjbWVjb3JwXCIpLlxuICAgIHRoaXMuX3N0YWNrSWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgICAgLnVwZGF0ZShgJHtvcHRzLnByb2plY3R9OiR7b3B0cy5vcmdhbml6YXRpb259YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgLmRpZ2VzdCgnaGV4JylcbiAgICAgIC5zbGljZSgwLCA4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdW5pcXVlIGNvbnN0cnVjdCBJRCBmb3IgdGhlIGdpdmVuIGxhYmVsLlxuICAgKiBJZiB0aGUgbGFiZWwgYWxyZWFkeSBlbmRzIHdpdGggYSBudW1lcmljIGNvdW50ZXIsIGl0IGlzIHJldHVybmVkIGFzLWlzLlxuICAgKiBPdGhlcndpc2UsIGFuIGF1dG8taW5jcmVtZW50aW5nIGNvdW50ZXIgaXMgYXBwZW5kZWQ7IGlmIGEgc3RhY2staWRlbnRpdHlcbiAgICogaGFzaCB3YXMgcHJvdmlkZWQgYXQgY29uc3RydWN0aW9uLCBpdCdzIGluc2VydGVkIGFmdGVyIHRoZSBmaXJzdCBzZWdtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbGFiZWwgLSBDb2xvbi1zZXBhcmF0ZWQgbmFtZXNwYWNlIChlLmcuLCAncGx1Z2luOmxvb2t1cCcpXG4gICAqIEByZXR1cm5zIFRoZSBsYWJlbCB3aXRoIGhhc2ggKyBjb3VudGVyIGluc2VydGVkXG4gICAqL1xuICBnZW5lcmF0ZShsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWxhYmVsIHx8IHR5cGVvZiBsYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGFiZWwgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICAvLyBBbHJlYWR5IGNvdW50ZWQgKGUuZy4sICdjZGs6cGlwZWxpbmU6MScpIOKAlCBwYXNzIHRocm91Z2guXG4gICAgaWYgKC86XFxkKyQvLnRlc3QobGFiZWwpKSB7XG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnQgPSAodGhpcy5fY291bnRlcnMuZ2V0KGxhYmVsKSA/PyAwKSArIDE7XG4gICAgdGhpcy5fY291bnRlcnMuc2V0KGxhYmVsLCBjb3VudCk7XG5cbiAgICAvLyBJbnNlcnQgdGhlIHN0YWNrIGhhc2ggYWZ0ZXIgdGhlIGZpcnN0IG5hbWVzcGFjZSBzZWdtZW50IHNvIHRoZSBsZWFkaW5nXG4gICAgLy8gY2F0ZWdvcnkgKGBwbHVnaW5gLCBgbG9nYCwgYHJlc291cmNlYCwgZXRjLikgc3RheXMgaHVtYW4tcmVhZGFibGUuXG4gICAgY29uc3QgaWR4ID0gbGFiZWwuaW5kZXhPZignOicpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAvLyBTaW5nbGUtc2VnbWVudCBsYWJlbCDigJQgcHV0IHRoZSBoYXNoIGJlZm9yZSB0aGUgY291bnRlci5cbiAgICAgIHJldHVybiBgJHtsYWJlbH06JHt0aGlzLl9zdGFja0lkfToke2NvdW50fWA7XG4gICAgfVxuICAgIGNvbnN0IGhlYWQgPSBsYWJlbC5zbGljZSgwLCBpZHgpO1xuICAgIGNvbnN0IHRhaWwgPSBsYWJlbC5zbGljZShpZHggKyAxKTtcbiAgICByZXR1cm4gYCR7aGVhZH06JHt0aGlzLl9zdGFja0lkfToke3RhaWx9OiR7Y291bnR9YDtcbiAgfVxuXG4gIC8qKiBUaGUgc3RhY2staWRlbnRpdHkgaGFzaCBkZXJpdmVkIGZyb20gb3JnYW5pemF0aW9uICsgcHJvamVjdC4gKi9cbiAgZ2V0IHN0YWNrSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhY2tJZDtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"constructs": "10.5.1",
|
|
31
31
|
"jsonwebtoken": "9.0.3",
|
|
32
32
|
"uuid": "13.0.0",
|
|
33
|
-
"@pipeline-builder/api-core": "3.4.
|
|
34
|
-
"@pipeline-builder/pipeline-data": "3.4.
|
|
33
|
+
"@pipeline-builder/api-core": "3.4.62",
|
|
34
|
+
"@pipeline-builder/pipeline-data": "3.4.63"
|
|
35
35
|
},
|
|
36
36
|
"keywords": [
|
|
37
37
|
"aws",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"access": "public",
|
|
76
76
|
"registry": "https://registry.npmjs.org/"
|
|
77
77
|
},
|
|
78
|
-
"version": "3.4.
|
|
78
|
+
"version": "3.4.68",
|
|
79
79
|
"bugs": {
|
|
80
80
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
81
81
|
},
|