@codedrifters/configulator 0.0.63 → 0.0.65

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.
@@ -1,5 +1,145 @@
1
1
  import { Component, Project } from "projen";
2
+ import { ValueOf } from "type-fest";
3
+ /**
4
+ * Predefined minimum release age values in minutes.
5
+ */
6
+ export declare const MIMIMUM_RELEASE_AGE: {
7
+ ZERO_DAYS: number;
8
+ ONE_HOUR: number;
9
+ SIX_HOURS: number;
10
+ TWELVE_HOURS: number;
11
+ ONE_DAY: number;
12
+ TWO_DAYS: number;
13
+ THREE_DAYS: number;
14
+ FOUR_DAYS: number;
15
+ FIVE_DAYS: number;
16
+ SIX_DAYS: number;
17
+ ONE_WEEK: number;
18
+ };
19
+ export interface PnpmWorkspaceOptions {
20
+ /**
21
+ * Filename for the pnpm workspace file. This should probably never change.
22
+ *
23
+ * @default "pnpm-workspace.yaml"
24
+ */
25
+ readonly fileName?: string;
26
+ /**
27
+ * To reduce the risk of installing compromised packages, you can delay the
28
+ * installation of newly published versions. In most cases, malicious releases
29
+ * are discovered and removed from the registry within an hour.
30
+ *
31
+ * minimumReleaseAge defines the minimum number of minutes that must pass
32
+ * after a version is published before pnpm will install it. This applies to
33
+ * all dependencies, including transitive ones.
34
+ *
35
+ * Note: this should match depsUpgradeOptions.cooldown in the project config.
36
+ *
37
+ * See: https://pnpm.io/settings#minimumreleaseage
38
+ *
39
+ * @default MIMIMUM_RELEASE_AGE.ONE_DAY
40
+ */
41
+ readonly minimumReleaseAge?: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
42
+ /**
43
+ * If you set minimumReleaseAge but need certain dependencies to always
44
+ * install the newest version immediately, you can list them under
45
+ * minimumReleaseAgeExclude. The exclusion works by package name and applies
46
+ * to all versions of that package.
47
+ *
48
+ * @default - no exclusions (empty array)
49
+ *
50
+ * See: https://pnpm.io/settings#minimumreleaseageexclude
51
+ */
52
+ readonly minimumReleaseAgeExclude?: Array<string>;
53
+ /**
54
+ * A list of package names that are allowed to execute "preinstall",
55
+ * "install", and/or "postinstall" scripts during installation. Only the
56
+ * packages listed in this array will be able to run those lifecycle scripts.
57
+ * If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
58
+ * configuration option will default to blocking all install scripts.
59
+ *
60
+ * You may restrict allowances to specific versions (and lists of versions
61
+ * using a disjunction with ||). When versions are specified, only those
62
+ * versions of the package may run lifecycle scripts:
63
+ *
64
+ * See: https://pnpm.io/settings#onlybuiltdependencies
65
+ *
66
+ * @default none (empty array)
67
+ */
68
+ readonly onlyBuiltDependencies?: Array<string>;
69
+ /**
70
+ * A list of package names that are NOT allowed to execute "preinstall",
71
+ * "install", and/or "postinstall" scripts during installation and will not
72
+ * warn or ask to be executed.
73
+ *
74
+ * This is useful when you want to hide the warning because you know the
75
+ * lifecycle scripts are not needed.
76
+ *
77
+ * https://pnpm.io/settings#ignoredbuiltdependencies
78
+ *
79
+ * @default none (empty array)
80
+ */
81
+ readonly ignoredBuiltDependencies?: Array<string>;
82
+ }
2
83
  export declare class PnpmWorkspace extends Component {
84
+ /**
85
+ * Get the pnpm workspace component of a project. If it does not exist,
86
+ * return undefined.
87
+ *
88
+ * @param project
89
+ * @returns
90
+ */
3
91
  static of(project: Project): PnpmWorkspace | undefined;
4
- constructor(project: Project);
92
+ /**
93
+ * Filename for the pnpm workspace file.
94
+ */
95
+ readonly fileName: string;
96
+ /**
97
+ * To reduce the risk of installing compromised packages, you can delay the
98
+ * installation of newly published versions. In most cases, malicious releases
99
+ * are discovered and removed from the registry within an hour.
100
+ *
101
+ * minimumReleaseAge defines the minimum number of minutes that must pass
102
+ * after a version is published before pnpm will install it. This applies to
103
+ * all dependencies, including transitive ones.
104
+ *
105
+ * Note: this should match depsUpgradeOptions.cooldown in the project config.
106
+ *
107
+ * See: https://pnpm.io/settings#minimumreleaseage
108
+ */
109
+ minimumReleaseAge: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
110
+ /**
111
+ * If you set minimumReleaseAge but need certain dependencies to always
112
+ * install the newest version immediately, you can list them under
113
+ * minimumReleaseAgeExclude. The exclusion works by package name and applies
114
+ * to all versions of that package.
115
+ *
116
+ * See: https://pnpm.io/settings#minimumreleaseageexclude
117
+ */
118
+ minimumReleaseAgeExclude: Array<string>;
119
+ /**
120
+ * A list of package names that are allowed to execute "preinstall",
121
+ * "install", and/or "postinstall" scripts during installation. Only the
122
+ * packages listed in this array will be able to run those lifecycle scripts.
123
+ * If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
124
+ * configuration option will default to blocking all install scripts.
125
+ *
126
+ * You may restrict allowances to specific versions (and lists of versions
127
+ * using a disjunction with ||). When versions are specified, only those
128
+ * versions of the package may run lifecycle scripts:
129
+ *
130
+ * See: https://pnpm.io/settings#onlybuiltdependencies
131
+ */
132
+ onlyBuiltDependencies: Array<string>;
133
+ /**
134
+ * A list of package names that are NOT allowed to execute "preinstall",
135
+ * "install", and/or "postinstall" scripts during installation and will not
136
+ * warn or ask to be executed.
137
+ *
138
+ * This is useful when you want to hide the warning because you know the
139
+ * lifecycle scripts are not needed.
140
+ *
141
+ * https://pnpm.io/settings#ignoredbuiltdependencies
142
+ */
143
+ ignoredBuiltDependencies: Array<string>;
144
+ constructor(project: Project, options?: PnpmWorkspaceOptions);
5
145
  }
@@ -1,36 +1,138 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PnpmWorkspace = void 0;
3
+ exports.PnpmWorkspace = exports.MIMIMUM_RELEASE_AGE = void 0;
4
4
  const path_1 = require("path");
5
5
  const projen_1 = require("projen");
6
+ /**
7
+ * Predefined minimum release age values in minutes.
8
+ */
9
+ exports.MIMIMUM_RELEASE_AGE = {
10
+ ZERO_DAYS: 0,
11
+ ONE_HOUR: 60,
12
+ SIX_HOURS: 360,
13
+ TWELVE_HOURS: 720,
14
+ ONE_DAY: 1440,
15
+ TWO_DAYS: 2880,
16
+ THREE_DAYS: 4320,
17
+ FOUR_DAYS: 5760,
18
+ FIVE_DAYS: 7200,
19
+ SIX_DAYS: 8640,
20
+ ONE_WEEK: 10080,
21
+ };
6
22
  class PnpmWorkspace extends projen_1.Component {
23
+ /**
24
+ * Get the pnpm workspace component of a project. If it does not exist,
25
+ * return undefined.
26
+ *
27
+ * @param project
28
+ * @returns
29
+ */
7
30
  static of(project) {
8
31
  const isDefined = (c) => c instanceof PnpmWorkspace;
9
32
  return project.root.components.find(isDefined);
10
33
  }
11
- constructor(project) {
34
+ constructor(project, options = {}) {
12
35
  super(project);
13
- const fileName = "pnpm-workspace.yaml";
36
+ /***************************************************************************
37
+ *
38
+ * CLEAR package,json
39
+ *
40
+ * It appears that if ANY pnpm settings exist in the package.json file, all
41
+ * of the setting in the pnpm-workspace.yaml file are ignored. so we need to
42
+ * clear out anything that was placed into the package.json file.
43
+ *
44
+ **************************************************************************/
45
+ project.tryFindObjectFile("package.json")?.addDeletionOverride("pnpm");
46
+ /***************************************************************************
47
+ *
48
+ * Setup pnpm-workspace.yaml file.
49
+ *
50
+ * Now that the package.json file is cleared of any pnpm settings, we can
51
+ * safely write settings to the pnpm-workspace.yaml file.
52
+ *
53
+ **************************************************************************
54
+
55
+ /**
56
+ * Set filename to default if not provided.
57
+ */
58
+ this.fileName = options.fileName ?? "pnpm-workspace.yaml";
59
+ /**
60
+ * Set minimum release age to default if not provided
61
+ */
62
+ this.minimumReleaseAge = options.minimumReleaseAge
63
+ ? options.minimumReleaseAge
64
+ : exports.MIMIMUM_RELEASE_AGE.ONE_DAY;
65
+ /**
66
+ * Set minimum release age exclude to empty array if not provided
67
+ */
68
+ this.minimumReleaseAgeExclude = options.minimumReleaseAgeExclude
69
+ ? ["@codedrifters/*", ...options.minimumReleaseAgeExclude]
70
+ : ["@codedrifters/*"];
71
+ /**
72
+ * Set only built dependencies to empty array if not provided
73
+ */
74
+ this.onlyBuiltDependencies = options.onlyBuiltDependencies
75
+ ? options.onlyBuiltDependencies
76
+ : [];
77
+ /**
78
+ * Set ignored built dependencies to empty array if not provided
79
+ */
80
+ this.ignoredBuiltDependencies = options.ignoredBuiltDependencies
81
+ ? options.ignoredBuiltDependencies
82
+ : [];
14
83
  /**
15
84
  * In case that this file is in a package, don't package it.
16
85
  */
17
- project.addPackageIgnore(fileName);
86
+ project.addPackageIgnore(this.fileName);
18
87
  /**
19
88
  * Write pnpm workspace file
20
89
  */
21
- new projen_1.YamlFile(this.project, fileName, {
22
- obj: {
23
- packages: () => {
24
- const packages = new Array();
90
+ new projen_1.YamlFile(this.project, this.fileName, {
91
+ obj: () => {
92
+ const pnpmConfig = {};
93
+ const packages = new Array();
94
+ /**
95
+ * If any subprojects exist, output all subprojects in the workspace as
96
+ * packages.
97
+ */
98
+ if (this.project.subprojects.length > 0) {
25
99
  for (const subproject of project.subprojects) {
26
100
  // grab the relative out directory
27
101
  packages.push((0, path_1.relative)(this.project.outdir, subproject.outdir));
28
102
  }
29
- return packages;
30
- },
103
+ }
104
+ /**
105
+ * Set minimum release age.
106
+ */
107
+ pnpmConfig.minimumReleaseAge = this.minimumReleaseAge;
108
+ /**
109
+ * Set minimum release age exclude if any are provided.
110
+ */
111
+ if (this.minimumReleaseAgeExclude.length > 0) {
112
+ pnpmConfig.minimumReleaseAgeExclude = this.minimumReleaseAgeExclude;
113
+ }
114
+ /**
115
+ * Set only built dependencies if any are provided.
116
+ */
117
+ if (this.onlyBuiltDependencies.length > 0) {
118
+ pnpmConfig.onlyBuiltDependencies = this.onlyBuiltDependencies;
119
+ }
120
+ /**
121
+ * Set ignored built dependencies if any are provided.
122
+ */
123
+ if (this.ignoredBuiltDependencies.length > 0) {
124
+ pnpmConfig.ignoreBuiltDependencies = this.ignoredBuiltDependencies;
125
+ }
126
+ /**
127
+ * Return the final pnpm config object.
128
+ */
129
+ return {
130
+ ...(packages.length > 0 ? { packages } : {}),
131
+ ...(pnpmConfig ? { ...pnpmConfig } : {}),
132
+ };
31
133
  },
32
134
  });
33
135
  }
34
136
  }
35
137
  exports.PnpmWorkspace = PnpmWorkspace;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBRXRELE1BQWEsYUFBYyxTQUFRLGtCQUFTO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQXNCLEVBQUUsQ0FDckQsQ0FBQyxZQUFZLGFBQWEsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFFBQVEsR0FBVyxxQkFBcUIsQ0FBQztRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDN0Msa0NBQWtDO3dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsZUFBUSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxDQUFDO29CQUNELE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0Qsc0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBZYW1sRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcblxuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBQbnBtV29ya3NwYWNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBQbnBtV29ya3NwYWNlID0+XG4gICAgICBjIGluc3RhbmNlb2YgUG5wbVdvcmtzcGFjZTtcbiAgICByZXR1cm4gcHJvamVjdC5yb290LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgZmlsZU5hbWU6IHN0cmluZyA9IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiO1xuXG4gICAgLyoqXG4gICAgICogSW4gY2FzZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiBhIHBhY2thZ2UsIGRvbid0IHBhY2thZ2UgaXQuXG4gICAgICovXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHBhY2thZ2VzOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFja2FnZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdCBvZiBwcm9qZWN0LnN1YnByb2plY3RzKSB7XG4gICAgICAgICAgICAvLyBncmFiIHRoZSByZWxhdGl2ZSBvdXQgZGlyZWN0b3J5XG4gICAgICAgICAgICBwYWNrYWdlcy5wdXNoKHJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YnByb2plY3Qub3V0ZGlyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYWNrYWdlcztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBR3REOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLEdBQUc7SUFDZCxZQUFZLEVBQUUsR0FBRztJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQXVFRixNQUFhLGFBQWMsU0FBUSxrQkFBUztJQUMxQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFzQixFQUFFLENBQ3JELENBQUMsWUFBWSxhQUFhLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQTJERCxZQUFZLE9BQWdCLEVBQUUsVUFBZ0MsRUFBRTtRQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZjs7Ozs7Ozs7b0ZBUTRFO1FBRTVFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RTs7Ozs7Ozs7Ozs7V0FXRztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQztRQUUxRDs7V0FFRztRQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCO1lBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCO1lBQzNCLENBQUMsQ0FBQywyQkFBbUIsQ0FBQyxPQUFPLENBQUM7UUFFaEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLHdCQUF3QjtZQUM5RCxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxxQkFBcUI7WUFDeEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUI7WUFDL0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOztXQUVHO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyx3QkFBd0I7WUFDOUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7WUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOztXQUVHO1FBQ0gsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7Z0JBRXJDOzs7bUJBR0c7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUM3QyxrQ0FBa0M7d0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRDs7bUJBRUc7Z0JBQ0gsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFFdEQ7O21CQUVHO2dCQUNILElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsVUFBVSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdEUsQ0FBQztnQkFFRDs7bUJBRUc7Z0JBQ0gsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQyxVQUFVLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUNoRSxDQUFDO2dCQUVEOzttQkFFRztnQkFDSCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3JFLENBQUM7Z0JBRUQ7O21CQUVHO2dCQUNILE9BQU87b0JBQ0wsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzVDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVMRCxzQ0E0TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QsIFlhbWxGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVmFsdWVPZiB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcblxuLyoqXG4gKiBQcmVkZWZpbmVkIG1pbmltdW0gcmVsZWFzZSBhZ2UgdmFsdWVzIGluIG1pbnV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNSU1JTVVNX1JFTEVBU0VfQUdFID0ge1xuICBaRVJPX0RBWVM6IDAsXG4gIE9ORV9IT1VSOiA2MCxcbiAgU0lYX0hPVVJTOiAzNjAsXG4gIFRXRUxWRV9IT1VSUzogNzIwLFxuICBPTkVfREFZOiAxNDQwLFxuICBUV09fREFZUzogMjg4MCxcbiAgVEhSRUVfREFZUzogNDMyMCxcbiAgRk9VUl9EQVlTOiA1NzYwLFxuICBGSVZFX0RBWVM6IDcyMDAsXG4gIFNJWF9EQVlTOiA4NjQwLFxuICBPTkVfV0VFSzogMTAwODAsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIGZvciB0aGUgcG5wbSB3b3Jrc3BhY2UgZmlsZS4gVGhpcyBzaG91bGQgcHJvYmFibHkgbmV2ZXIgY2hhbmdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInBucG0td29ya3NwYWNlLnlhbWxcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvIHJlZHVjZSB0aGUgcmlzayBvZiBpbnN0YWxsaW5nIGNvbXByb21pc2VkIHBhY2thZ2VzLCB5b3UgY2FuIGRlbGF5IHRoZVxuICAgKiBpbnN0YWxsYXRpb24gb2YgbmV3bHkgcHVibGlzaGVkIHZlcnNpb25zLiBJbiBtb3N0IGNhc2VzLCBtYWxpY2lvdXMgcmVsZWFzZXNcbiAgICogYXJlIGRpc2NvdmVyZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgcmVnaXN0cnkgd2l0aGluIGFuIGhvdXIuXG4gICAqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3NcbiAgICogYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0b1xuICAgKiBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBOb3RlOiB0aGlzIHNob3VsZCBtYXRjaCBkZXBzVXBncmFkZU9wdGlvbnMuY29vbGRvd24gaW4gdGhlIHByb2plY3QgY29uZmlnLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBNSU1JTVVNX1JFTEVBU0VfQUdFLk9ORV9EQVlcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogVmFsdWVPZjx0eXBlb2YgTUlNSU1VTV9SRUxFQVNFX0FHRT47XG5cbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgbWluaW11bVJlbGVhc2VBZ2UgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzXG4gICAqIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlclxuICAgKiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgcGFja2FnZSBuYW1lIGFuZCBhcHBsaWVzXG4gICAqIHRvIGFsbCB2ZXJzaW9ucyBvZiB0aGF0IHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9ucyAoZW1wdHkgYXJyYXkpXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI21pbmltdW1yZWxlYXNlYWdlZXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24uIE9ubHkgdGhlXG4gICAqIHBhY2thZ2VzIGxpc3RlZCBpbiB0aGlzIGFycmF5IHdpbGwgYmUgYWJsZSB0byBydW4gdGhvc2UgbGlmZWN5Y2xlIHNjcmlwdHMuXG4gICAqIElmIG9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUgYW5kIG5ldmVyQnVpbHREZXBlbmRlbmNpZXMgYXJlIG9taXR0ZWQsIHRoaXNcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb24gd2lsbCBkZWZhdWx0IHRvIGJsb2NraW5nIGFsbCBpbnN0YWxsIHNjcmlwdHMuXG4gICAqXG4gICAqIFlvdSBtYXkgcmVzdHJpY3QgYWxsb3dhbmNlcyB0byBzcGVjaWZpYyB2ZXJzaW9ucyAoYW5kIGxpc3RzIG9mIHZlcnNpb25zXG4gICAqIHVzaW5nIGEgZGlzanVuY3Rpb24gd2l0aCB8fCkuIFdoZW4gdmVyc2lvbnMgYXJlIHNwZWNpZmllZCwgb25seSB0aG9zZVxuICAgKiB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSBtYXkgcnVuIGxpZmVjeWNsZSBzY3JpcHRzOlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNvbmx5YnVpbHRkZXBlbmRlbmNpZXNcbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSAoZW1wdHkgYXJyYXkpXG4gICAqL1xuICByZWFkb25seSBvbmx5QnVpbHREZXBlbmRlbmNpZXM/OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24gYW5kIHdpbGwgbm90XG4gICAqIHdhcm4gb3IgYXNrIHRvIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGhpZGUgdGhlIHdhcm5pbmcgYmVjYXVzZSB5b3Uga25vdyB0aGVcbiAgICogbGlmZWN5Y2xlIHNjcmlwdHMgYXJlIG5vdCBuZWVkZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNpZ25vcmVkYnVpbHRkZXBlbmRlbmNpZXNcbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSAoZW1wdHkgYXJyYXkpXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgY2xhc3MgUG5wbVdvcmtzcGFjZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHBucG0gd29ya3NwYWNlIGNvbXBvbmVudCBvZiBhIHByb2plY3QuIElmIGl0IGRvZXMgbm90IGV4aXN0LFxuICAgKiByZXR1cm4gdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogUG5wbVdvcmtzcGFjZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgUG5wbVdvcmtzcGFjZSA9PlxuICAgICAgYyBpbnN0YW5jZW9mIFBucG1Xb3Jrc3BhY2U7XG4gICAgcmV0dXJuIHByb2plY3Qucm9vdC5jb21wb25lbnRzLmZpbmQoaXNEZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWxlbmFtZSBmb3IgdGhlIHBucG0gd29ya3NwYWNlIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVG8gcmVkdWNlIHRoZSByaXNrIG9mIGluc3RhbGxpbmcgY29tcHJvbWlzZWQgcGFja2FnZXMsIHlvdSBjYW4gZGVsYXkgdGhlXG4gICAqIGluc3RhbGxhdGlvbiBvZiBuZXdseSBwdWJsaXNoZWQgdmVyc2lvbnMuIEluIG1vc3QgY2FzZXMsIG1hbGljaW91cyByZWxlYXNlc1xuICAgKiBhcmUgZGlzY292ZXJlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSByZWdpc3RyeSB3aXRoaW4gYW4gaG91ci5cbiAgICpcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzc1xuICAgKiBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvXG4gICAqIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgc2hvdWxkIG1hdGNoIGRlcHNVcGdyYWRlT3B0aW9ucy5jb29sZG93biBpbiB0aGUgcHJvamVjdCBjb25maWcuXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI21pbmltdW1yZWxlYXNlYWdlXG4gICAqL1xuICBwdWJsaWMgbWluaW11bVJlbGVhc2VBZ2U6IFZhbHVlT2Y8dHlwZW9mIE1JTUlNVU1fUkVMRUFTRV9BR0U+O1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IG1pbmltdW1SZWxlYXNlQWdlIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5c1xuICAgKiBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXJcbiAgICogbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlLiBUaGUgZXhjbHVzaW9uIHdvcmtzIGJ5IHBhY2thZ2UgbmFtZSBhbmQgYXBwbGllc1xuICAgKiB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZWV4Y2x1ZGVcbiAgICovXG4gIHB1YmxpYyBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZXhlY3V0ZSBcInByZWluc3RhbGxcIixcbiAgICogXCJpbnN0YWxsXCIsIGFuZC9vciBcInBvc3RpbnN0YWxsXCIgc2NyaXB0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBPbmx5IHRoZVxuICAgKiBwYWNrYWdlcyBsaXN0ZWQgaW4gdGhpcyBhcnJheSB3aWxsIGJlIGFibGUgdG8gcnVuIHRob3NlIGxpZmVjeWNsZSBzY3JpcHRzLlxuICAgKiBJZiBvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlIGFuZCBuZXZlckJ1aWx0RGVwZW5kZW5jaWVzIGFyZSBvbWl0dGVkLCB0aGlzXG4gICAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgZGVmYXVsdCB0byBibG9ja2luZyBhbGwgaW5zdGFsbCBzY3JpcHRzLlxuICAgKlxuICAgKiBZb3UgbWF5IHJlc3RyaWN0IGFsbG93YW5jZXMgdG8gc3BlY2lmaWMgdmVyc2lvbnMgKGFuZCBsaXN0cyBvZiB2ZXJzaW9uc1xuICAgKiB1c2luZyBhIGRpc2p1bmN0aW9uIHdpdGggfHwpLiBXaGVuIHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIG9ubHkgdGhvc2VcbiAgICogdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2UgbWF5IHJ1biBsaWZlY3ljbGUgc2NyaXB0czpcbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vc2V0dGluZ3Mjb25seWJ1aWx0ZGVwZW5kZW5jaWVzXG4gICAqL1xuICBwdWJsaWMgb25seUJ1aWx0RGVwZW5kZW5jaWVzOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24gYW5kIHdpbGwgbm90XG4gICAqIHdhcm4gb3IgYXNrIHRvIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGhpZGUgdGhlIHdhcm5pbmcgYmVjYXVzZSB5b3Uga25vdyB0aGVcbiAgICogbGlmZWN5Y2xlIHNjcmlwdHMgYXJlIG5vdCBuZWVkZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNpZ25vcmVkYnVpbHRkZXBlbmRlbmNpZXNcbiAgICovXG4gIHB1YmxpYyBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM6IEFycmF5PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogUG5wbVdvcmtzcGFjZU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ0xFQVIgcGFja2FnZSxqc29uXG4gICAgICpcbiAgICAgKiBJdCBhcHBlYXJzIHRoYXQgaWYgQU5ZIHBucG0gc2V0dGluZ3MgZXhpc3QgaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlLCBhbGxcbiAgICAgKiBvZiB0aGUgc2V0dGluZyBpbiB0aGUgcG5wbS13b3Jrc3BhY2UueWFtbCBmaWxlIGFyZSBpZ25vcmVkLiBzbyB3ZSBuZWVkIHRvXG4gICAgICogY2xlYXIgb3V0IGFueXRoaW5nIHRoYXQgd2FzIHBsYWNlZCBpbnRvIHRoZSBwYWNrYWdlLmpzb24gZmlsZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHByb2plY3QudHJ5RmluZE9iamVjdEZpbGUoXCJwYWNrYWdlLmpzb25cIik/LmFkZERlbGV0aW9uT3ZlcnJpZGUoXCJwbnBtXCIpO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqIFxuICAgICAqIFNldHVwIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZS5cbiAgICAgKiBcbiAgICAgKiBOb3cgdGhhdCB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgY2xlYXJlZCBvZiBhbnkgcG5wbSBzZXR0aW5ncywgd2UgY2FuXG4gICAgICogc2FmZWx5IHdyaXRlIHNldHRpbmdzIHRvIHRoZSBwbnBtLXdvcmtzcGFjZS55YW1sIGZpbGUuXG4gICAgICogXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICAvKipcbiAgICAgKiBTZXQgZmlsZW5hbWUgdG8gZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQuXG4gICAgICovXG4gICAgdGhpcy5maWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUgPz8gXCJwbnBtLXdvcmtzcGFjZS55YW1sXCI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZSB0byBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZFxuICAgICAqL1xuICAgIHRoaXMubWluaW11bVJlbGVhc2VBZ2UgPSBvcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlXG4gICAgICA/IG9wdGlvbnMubWluaW11bVJlbGVhc2VBZ2VcbiAgICAgIDogTUlNSU1VTV9SRUxFQVNFX0FHRS5PTkVfREFZO1xuXG4gICAgLyoqXG4gICAgICogU2V0IG1pbmltdW0gcmVsZWFzZSBhZ2UgZXhjbHVkZSB0byBlbXB0eSBhcnJheSBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSA9IG9wdGlvbnMubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlXG4gICAgICA/IFtcIkBjb2RlZHJpZnRlcnMvKlwiLCAuLi5vcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZV1cbiAgICAgIDogW1wiQGNvZGVkcmlmdGVycy8qXCJdO1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9ubHkgYnVpbHQgZGVwZW5kZW5jaWVzIHRvIGVtcHR5IGFycmF5IGlmIG5vdCBwcm92aWRlZFxuICAgICAqL1xuICAgIHRoaXMub25seUJ1aWx0RGVwZW5kZW5jaWVzID0gb3B0aW9ucy5vbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICAgID8gb3B0aW9ucy5vbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICAgIDogW107XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaWdub3JlZCBidWlsdCBkZXBlbmRlbmNpZXMgdG8gZW1wdHkgYXJyYXkgaWYgbm90IHByb3ZpZGVkXG4gICAgICovXG4gICAgdGhpcy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMgPSBvcHRpb25zLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llc1xuICAgICAgPyBvcHRpb25zLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llc1xuICAgICAgOiBbXTtcblxuICAgIC8qKlxuICAgICAqIEluIGNhc2UgdGhhdCB0aGlzIGZpbGUgaXMgaW4gYSBwYWNrYWdlLCBkb24ndCBwYWNrYWdlIGl0LlxuICAgICAqL1xuICAgIHByb2plY3QuYWRkUGFja2FnZUlnbm9yZSh0aGlzLmZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLmZpbGVOYW1lLCB7XG4gICAgICBvYmo6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcG5wbUNvbmZpZzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IHBhY2thZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYW55IHN1YnByb2plY3RzIGV4aXN0LCBvdXRwdXQgYWxsIHN1YnByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UgYXNcbiAgICAgICAgICogcGFja2FnZXMuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5wcm9qZWN0LnN1YnByb2plY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1YnByb2plY3Qgb2YgcHJvamVjdC5zdWJwcm9qZWN0cykge1xuICAgICAgICAgICAgLy8gZ3JhYiB0aGUgcmVsYXRpdmUgb3V0IGRpcmVjdG9yeVxuICAgICAgICAgICAgcGFja2FnZXMucHVzaChyZWxhdGl2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCBzdWJwcm9qZWN0Lm91dGRpcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZS5cbiAgICAgICAgICovXG4gICAgICAgIHBucG1Db25maWcubWluaW11bVJlbGVhc2VBZ2UgPSB0aGlzLm1pbmltdW1SZWxlYXNlQWdlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZSBleGNsdWRlIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlID0gdGhpcy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IG9ubHkgYnVpbHQgZGVwZW5kZW5jaWVzIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5vbmx5QnVpbHREZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcub25seUJ1aWx0RGVwZW5kZW5jaWVzID0gdGhpcy5vbmx5QnVpbHREZXBlbmRlbmNpZXM7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IGlnbm9yZWQgYnVpbHQgZGVwZW5kZW5jaWVzIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcuaWdub3JlQnVpbHREZXBlbmRlbmNpZXMgPSB0aGlzLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm4gdGhlIGZpbmFsIHBucG0gY29uZmlnIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uKHBhY2thZ2VzLmxlbmd0aCA+IDAgPyB7IHBhY2thZ2VzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHBucG1Db25maWcgPyB7IC4uLnBucG1Db25maWcgfSA6IHt9KSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "organization": true
11
11
  },
12
12
  "devDependencies": {
13
- "@swc/core": "^1.15.2",
13
+ "@swc/core": "^1.15.3",
14
14
  "@swc/jest": "^0.2.39",
15
15
  "@types/jest": "^30.0.0",
16
16
  "@types/node": "^22.19.1",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "main": "lib/index.js",
43
43
  "license": "MIT",
44
- "version": "0.0.63",
44
+ "version": "0.0.65",
45
45
  "types": "lib/index.d.ts",
46
46
  "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".",
47
47
  "scripts": {