comic-vine-sdk 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/lib/cjs/comic-vine.d.ts +41 -39
- package/lib/cjs/comic-vine.js +91 -78
- package/lib/esm/comic-vine.d.ts +41 -39
- package/lib/esm/comic-vine.js +58 -78
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
### [1.3.
|
|
5
|
+
### [1.3.2](https://github.com/AllyMurray/comic-vine/compare/v1.3.1...v1.3.2) (2025-07-03)
|
|
6
6
|
|
|
7
7
|
## [1.2.8] - 2024-01-01
|
|
8
8
|
|
package/lib/cjs/comic-vine.d.ts
CHANGED
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
import { userOptions } from './options/index.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
import { ResourceFactory } from './resources/index.js';
|
|
3
|
+
import * as resources from './resources/resource-list.js';
|
|
4
|
+
type ResourceInstance = ReturnType<ResourceFactory['create']>;
|
|
5
|
+
type ResourcePropertyMap = {
|
|
6
|
+
[K in keyof typeof resources as Uncapitalize<K>]: InstanceType<(typeof resources)[K]>;
|
|
7
|
+
};
|
|
8
|
+
export declare class ComicVine implements ResourcePropertyMap {
|
|
9
|
+
private resourceFactory;
|
|
10
|
+
private resourceCache;
|
|
11
|
+
private resourceNames;
|
|
12
|
+
readonly character: ResourcePropertyMap['character'];
|
|
13
|
+
readonly concept: ResourcePropertyMap['concept'];
|
|
14
|
+
readonly episode: ResourcePropertyMap['episode'];
|
|
15
|
+
readonly issue: ResourcePropertyMap['issue'];
|
|
16
|
+
readonly location: ResourcePropertyMap['location'];
|
|
17
|
+
readonly movie: ResourcePropertyMap['movie'];
|
|
18
|
+
readonly origin: ResourcePropertyMap['origin'];
|
|
19
|
+
readonly person: ResourcePropertyMap['person'];
|
|
20
|
+
readonly power: ResourcePropertyMap['power'];
|
|
21
|
+
readonly promo: ResourcePropertyMap['promo'];
|
|
22
|
+
readonly publisher: ResourcePropertyMap['publisher'];
|
|
23
|
+
readonly series: ResourcePropertyMap['series'];
|
|
24
|
+
readonly storyArc: ResourcePropertyMap['storyArc'];
|
|
25
|
+
readonly team: ResourcePropertyMap['team'];
|
|
26
|
+
readonly thing: ResourcePropertyMap['thing'];
|
|
27
|
+
readonly video: ResourcePropertyMap['video'];
|
|
28
|
+
readonly videoCategory: ResourcePropertyMap['videoCategory'];
|
|
29
|
+
readonly videoType: ResourcePropertyMap['videoType'];
|
|
30
|
+
readonly volume: ResourcePropertyMap['volume'];
|
|
22
31
|
constructor(key: string, options?: userOptions);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
get series(): import("./resources/resource-list.js").Series;
|
|
35
|
-
get storyArc(): import("./resources/resource-list.js").StoryArc;
|
|
36
|
-
get team(): import("./resources/resource-list.js").Team;
|
|
37
|
-
get thing(): import("./resources/resource-list.js").Thing;
|
|
38
|
-
get video(): import("./resources/resource-list.js").Video;
|
|
39
|
-
get videoCategory(): import("./resources/resource-list.js").VideoCategory;
|
|
40
|
-
get videoType(): import("./resources/resource-list.js").VideoType;
|
|
41
|
-
get volume(): import("./resources/resource-list.js").Volume;
|
|
32
|
+
private isResourceProperty;
|
|
33
|
+
private getResource;
|
|
34
|
+
getAvailableResources(): string[];
|
|
35
|
+
hasResource(resourceName: string): boolean;
|
|
36
|
+
getResourceByName(resourceName: string): ResourceInstance | undefined;
|
|
37
|
+
isResourceLoaded(resourceName: string): boolean;
|
|
38
|
+
getCacheStats(): {
|
|
39
|
+
total: number;
|
|
40
|
+
loaded: number;
|
|
41
|
+
loadedResources: string[];
|
|
42
|
+
};
|
|
42
43
|
}
|
|
44
|
+
export {};
|
package/lib/cjs/comic-vine.js
CHANGED
|
@@ -1,92 +1,105 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.ComicVine = void 0;
|
|
4
37
|
const index_js_1 = require("./http-client/index.js");
|
|
5
38
|
const index_js_2 = require("./options/index.js");
|
|
6
39
|
const index_js_3 = require("./resources/index.js");
|
|
40
|
+
const resources = __importStar(require("./resources/resource-list.js"));
|
|
41
|
+
function classNameToPropertyName(className) {
|
|
42
|
+
return className.charAt(0).toLowerCase() + className.slice(1);
|
|
43
|
+
}
|
|
7
44
|
class ComicVine {
|
|
8
45
|
constructor(key, options) {
|
|
46
|
+
this.resourceCache = new Map();
|
|
9
47
|
const _options = (0, index_js_2.loadOptions)(options);
|
|
10
48
|
const httpClient = index_js_1.HttpClientFactory.createClient();
|
|
11
49
|
const urlBuilder = index_js_1.HttpClientFactory.createUrlBuilder(key, _options.baseUrl);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return this._publisher;
|
|
65
|
-
}
|
|
66
|
-
get series() {
|
|
67
|
-
return this._series;
|
|
68
|
-
}
|
|
69
|
-
get storyArc() {
|
|
70
|
-
return this._storyArc;
|
|
71
|
-
}
|
|
72
|
-
get team() {
|
|
73
|
-
return this._team;
|
|
74
|
-
}
|
|
75
|
-
get thing() {
|
|
76
|
-
return this._thing;
|
|
77
|
-
}
|
|
78
|
-
get video() {
|
|
79
|
-
return this._video;
|
|
80
|
-
}
|
|
81
|
-
get videoCategory() {
|
|
82
|
-
return this._videoCategory;
|
|
83
|
-
}
|
|
84
|
-
get videoType() {
|
|
85
|
-
return this._videoType;
|
|
86
|
-
}
|
|
87
|
-
get volume() {
|
|
88
|
-
return this._volume;
|
|
50
|
+
this.resourceFactory = new index_js_3.ResourceFactory(httpClient, urlBuilder);
|
|
51
|
+
// Discover available resources dynamically
|
|
52
|
+
this.resourceNames = Object.keys(resources);
|
|
53
|
+
// Return a proxy that provides lazy loading with full type safety
|
|
54
|
+
return new Proxy(this, {
|
|
55
|
+
get(target, prop) {
|
|
56
|
+
if (typeof prop === 'string' && target.isResourceProperty(prop)) {
|
|
57
|
+
return target.getResource(prop);
|
|
58
|
+
}
|
|
59
|
+
return Reflect.get(target, prop);
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
isResourceProperty(prop) {
|
|
64
|
+
// Check if this property corresponds to a known resource
|
|
65
|
+
const className = prop.charAt(0).toUpperCase() + prop.slice(1);
|
|
66
|
+
return this.resourceNames.includes(className);
|
|
67
|
+
}
|
|
68
|
+
getResource(propertyName) {
|
|
69
|
+
// Lazy loading: create resource only when first accessed
|
|
70
|
+
if (!this.resourceCache.has(propertyName)) {
|
|
71
|
+
const className = propertyName.charAt(0).toUpperCase() + propertyName.slice(1);
|
|
72
|
+
try {
|
|
73
|
+
const resource = this.resourceFactory.create(className);
|
|
74
|
+
this.resourceCache.set(propertyName, resource);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw new Error(`Failed to create resource '${className}': ${error}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return this.resourceCache.get(propertyName);
|
|
81
|
+
}
|
|
82
|
+
getAvailableResources() {
|
|
83
|
+
return this.resourceNames.map((name) => classNameToPropertyName(name));
|
|
84
|
+
}
|
|
85
|
+
hasResource(resourceName) {
|
|
86
|
+
return this.isResourceProperty(resourceName);
|
|
87
|
+
}
|
|
88
|
+
getResourceByName(resourceName) {
|
|
89
|
+
if (!this.isResourceProperty(resourceName)) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
return this.getResource(resourceName);
|
|
93
|
+
}
|
|
94
|
+
isResourceLoaded(resourceName) {
|
|
95
|
+
return this.resourceCache.has(resourceName);
|
|
96
|
+
}
|
|
97
|
+
getCacheStats() {
|
|
98
|
+
const total = this.resourceNames.length;
|
|
99
|
+
const loaded = this.resourceCache.size;
|
|
100
|
+
const loadedResources = Array.from(this.resourceCache.keys());
|
|
101
|
+
return { total, loaded, loadedResources };
|
|
89
102
|
}
|
|
90
103
|
}
|
|
91
104
|
exports.ComicVine = ComicVine;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUEyRDtBQUMzRCxpREFBOEQ7QUFDOUQsbURBQXVEO0FBQ3ZELHdFQUEwRDtBQUUxRCxTQUFTLHVCQUF1QixDQUFDLFNBQWlCO0lBQ2hELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFXRCxNQUFhLFNBQVM7SUEwQnBCLFlBQVksR0FBVyxFQUFFLE9BQXFCO1FBeEJ0QyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBeUIxRCxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsNEJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsNEJBQWlCLENBQUMsZ0JBQWdCLENBQ25ELEdBQUcsRUFDSCxRQUFRLENBQUMsT0FBTyxDQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDBCQUFlLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUMsa0VBQWtFO1FBQ2xFLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBcUI7Z0JBQy9CLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1NBQ0YsQ0FBYyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLHlEQUF5RDtRQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sV0FBVyxDQUFDLFlBQW9CO1FBQ3RDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFNBQVMsR0FDYixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUMxQyxTQUFtQyxDQUNwQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixTQUFTLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXLENBQUMsWUFBb0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQW9CO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhO1FBS1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBckdELDhCQXFHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9odHRwLWNsaWVudC9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyT3B0aW9ucywgbG9hZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzb3VyY2VGYWN0b3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzIGZyb20gJy4vcmVzb3VyY2VzL3Jlc291cmNlLWxpc3QuanMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVUb1Byb3BlcnR5TmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjbGFzc05hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjbGFzc05hbWUuc2xpY2UoMSk7XG59XG5cbnR5cGUgUmVzb3VyY2VJbnN0YW5jZSA9IFJldHVyblR5cGU8UmVzb3VyY2VGYWN0b3J5WydjcmVhdGUnXT47XG5cbi8vIENyZWF0ZSByZXNvdXJjZSBwcm9wZXJ0eSB0eXBlIG1hcHBpbmcgZHluYW1pY2FsbHlcbnR5cGUgUmVzb3VyY2VQcm9wZXJ0eU1hcCA9IHtcbiAgW0sgaW4ga2V5b2YgdHlwZW9mIHJlc291cmNlcyBhcyBVbmNhcGl0YWxpemU8Sz5dOiBJbnN0YW5jZVR5cGU8XG4gICAgKHR5cGVvZiByZXNvdXJjZXMpW0tdXG4gID47XG59O1xuXG5leHBvcnQgY2xhc3MgQ29taWNWaW5lIGltcGxlbWVudHMgUmVzb3VyY2VQcm9wZXJ0eU1hcCB7XG4gIHByaXZhdGUgcmVzb3VyY2VGYWN0b3J5OiBSZXNvdXJjZUZhY3Rvcnk7XG4gIHByaXZhdGUgcmVzb3VyY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvdXJjZUluc3RhbmNlPigpO1xuICBwcml2YXRlIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8vIFR5cGVTY3JpcHQgcHJvcGVydHkgZGVjbGFyYXRpb25zIGZvciBzdGF0aWMgdHlwaW5nICh3aWxsIGJlIHByb3ZpZGVkIGJ5IFByb3h5KVxuICBkZWNsYXJlIHJlYWRvbmx5IGNoYXJhY3RlcjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY2hhcmFjdGVyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29uY2VwdDogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY29uY2VwdCddO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVwaXNvZGU6IFJlc291cmNlUHJvcGVydHlNYXBbJ2VwaXNvZGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBpc3N1ZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnaXNzdWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBsb2NhdGlvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbG9jYXRpb24nXTtcbiAgZGVjbGFyZSByZWFkb25seSBtb3ZpZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbW92aWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBvcmlnaW46IFJlc291cmNlUHJvcGVydHlNYXBbJ29yaWdpbiddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHBlcnNvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsncGVyc29uJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcG93ZXI6IFJlc291cmNlUHJvcGVydHlNYXBbJ3Bvd2VyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHJvbW86IFJlc291cmNlUHJvcGVydHlNYXBbJ3Byb21vJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHVibGlzaGVyOiBSZXNvdXJjZVByb3BlcnR5TWFwWydwdWJsaXNoZXInXTtcbiAgZGVjbGFyZSByZWFkb25seSBzZXJpZXM6IFJlc291cmNlUHJvcGVydHlNYXBbJ3NlcmllcyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHN0b3J5QXJjOiBSZXNvdXJjZVByb3BlcnR5TWFwWydzdG9yeUFyYyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHRlYW06IFJlc291cmNlUHJvcGVydHlNYXBbJ3RlYW0nXTtcbiAgZGVjbGFyZSByZWFkb25seSB0aGluZzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndGhpbmcnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlbzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndmlkZW8nXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlb0NhdGVnb3J5OiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb0NhdGVnb3J5J107XG4gIGRlY2xhcmUgcmVhZG9ubHkgdmlkZW9UeXBlOiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb1R5cGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2b2x1bWU6IFJlc291cmNlUHJvcGVydHlNYXBbJ3ZvbHVtZSddO1xuXG4gIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBvcHRpb25zPzogdXNlck9wdGlvbnMpIHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IGxvYWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBIdHRwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoKTtcbiAgICBjb25zdCB1cmxCdWlsZGVyID0gSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlVXJsQnVpbGRlcihcbiAgICAgIGtleSxcbiAgICAgIF9vcHRpb25zLmJhc2VVcmwsXG4gICAgKTtcbiAgICB0aGlzLnJlc291cmNlRmFjdG9yeSA9IG5ldyBSZXNvdXJjZUZhY3RvcnkoaHR0cENsaWVudCwgdXJsQnVpbGRlcik7XG5cbiAgICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcmVzb3VyY2VzIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5yZXNvdXJjZU5hbWVzID0gT2JqZWN0LmtleXMocmVzb3VyY2VzKTtcblxuICAgIC8vIFJldHVybiBhIHByb3h5IHRoYXQgcHJvdmlkZXMgbGF6eSBsb2FkaW5nIHdpdGggZnVsbCB0eXBlIHNhZmV0eVxuICAgIHJldHVybiBuZXcgUHJveHkodGhpcywge1xuICAgICAgZ2V0KHRhcmdldCwgcHJvcDogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0LmlzUmVzb3VyY2VQcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuZ2V0UmVzb3VyY2UocHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG4gICAgICB9LFxuICAgIH0pIGFzIENvbWljVmluZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNvdXJjZVByb3BlcnR5KHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gYSBrbm93biByZXNvdXJjZVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlTmFtZXMuaW5jbHVkZXMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzb3VyY2UocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBSZXNvdXJjZUluc3RhbmNlIHtcbiAgICAvLyBMYXp5IGxvYWRpbmc6IGNyZWF0ZSByZXNvdXJjZSBvbmx5IHdoZW4gZmlyc3QgYWNjZXNzZWRcbiAgICBpZiAoIXRoaXMucmVzb3VyY2VDYWNoZS5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lID1cbiAgICAgICAgcHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHlOYW1lLnNsaWNlKDEpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRmFjdG9yeS5jcmVhdGUoXG4gICAgICAgICAgY2xhc3NOYW1lIGFzIGtleW9mIHR5cGVvZiByZXNvdXJjZXMsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzb3VyY2VDYWNoZS5zZXQocHJvcGVydHlOYW1lLCByZXNvdXJjZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcmVzb3VyY2UgJyR7Y2xhc3NOYW1lfSc6ICR7ZXJyb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuZ2V0KHByb3BlcnR5TmFtZSkhO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmxlUmVzb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZU5hbWVzLm1hcCgobmFtZSkgPT4gY2xhc3NOYW1lVG9Qcm9wZXJ0eU5hbWUobmFtZSkpO1xuICB9XG5cbiAgaGFzUmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc291cmNlUHJvcGVydHkocmVzb3VyY2VOYW1lKTtcbiAgfVxuXG4gIGdldFJlc291cmNlQnlOYW1lKHJlc291cmNlTmFtZTogc3RyaW5nKTogUmVzb3VyY2VJbnN0YW5jZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzb3VyY2VQcm9wZXJ0eShyZXNvdXJjZU5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpO1xuICB9XG5cbiAgaXNSZXNvdXJjZUxvYWRlZChyZXNvdXJjZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuaGFzKHJlc291cmNlTmFtZSk7XG4gIH1cblxuICBnZXRDYWNoZVN0YXRzKCk6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIGxvYWRlZFJlc291cmNlczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5yZXNvdXJjZU5hbWVzLmxlbmd0aDtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLnJlc291cmNlQ2FjaGUuc2l6ZTtcbiAgICBjb25zdCBsb2FkZWRSZXNvdXJjZXMgPSBBcnJheS5mcm9tKHRoaXMucmVzb3VyY2VDYWNoZS5rZXlzKCkpO1xuICAgIHJldHVybiB7IHRvdGFsLCBsb2FkZWQsIGxvYWRlZFJlc291cmNlcyB9O1xuICB9XG59XG4iXX0=
|
package/lib/esm/comic-vine.d.ts
CHANGED
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
import { userOptions } from './options/index.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
import { ResourceFactory } from './resources/index.js';
|
|
3
|
+
import * as resources from './resources/resource-list.js';
|
|
4
|
+
type ResourceInstance = ReturnType<ResourceFactory['create']>;
|
|
5
|
+
type ResourcePropertyMap = {
|
|
6
|
+
[K in keyof typeof resources as Uncapitalize<K>]: InstanceType<(typeof resources)[K]>;
|
|
7
|
+
};
|
|
8
|
+
export declare class ComicVine implements ResourcePropertyMap {
|
|
9
|
+
private resourceFactory;
|
|
10
|
+
private resourceCache;
|
|
11
|
+
private resourceNames;
|
|
12
|
+
readonly character: ResourcePropertyMap['character'];
|
|
13
|
+
readonly concept: ResourcePropertyMap['concept'];
|
|
14
|
+
readonly episode: ResourcePropertyMap['episode'];
|
|
15
|
+
readonly issue: ResourcePropertyMap['issue'];
|
|
16
|
+
readonly location: ResourcePropertyMap['location'];
|
|
17
|
+
readonly movie: ResourcePropertyMap['movie'];
|
|
18
|
+
readonly origin: ResourcePropertyMap['origin'];
|
|
19
|
+
readonly person: ResourcePropertyMap['person'];
|
|
20
|
+
readonly power: ResourcePropertyMap['power'];
|
|
21
|
+
readonly promo: ResourcePropertyMap['promo'];
|
|
22
|
+
readonly publisher: ResourcePropertyMap['publisher'];
|
|
23
|
+
readonly series: ResourcePropertyMap['series'];
|
|
24
|
+
readonly storyArc: ResourcePropertyMap['storyArc'];
|
|
25
|
+
readonly team: ResourcePropertyMap['team'];
|
|
26
|
+
readonly thing: ResourcePropertyMap['thing'];
|
|
27
|
+
readonly video: ResourcePropertyMap['video'];
|
|
28
|
+
readonly videoCategory: ResourcePropertyMap['videoCategory'];
|
|
29
|
+
readonly videoType: ResourcePropertyMap['videoType'];
|
|
30
|
+
readonly volume: ResourcePropertyMap['volume'];
|
|
22
31
|
constructor(key: string, options?: userOptions);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
get series(): import("./resources/resource-list.js").Series;
|
|
35
|
-
get storyArc(): import("./resources/resource-list.js").StoryArc;
|
|
36
|
-
get team(): import("./resources/resource-list.js").Team;
|
|
37
|
-
get thing(): import("./resources/resource-list.js").Thing;
|
|
38
|
-
get video(): import("./resources/resource-list.js").Video;
|
|
39
|
-
get videoCategory(): import("./resources/resource-list.js").VideoCategory;
|
|
40
|
-
get videoType(): import("./resources/resource-list.js").VideoType;
|
|
41
|
-
get volume(): import("./resources/resource-list.js").Volume;
|
|
32
|
+
private isResourceProperty;
|
|
33
|
+
private getResource;
|
|
34
|
+
getAvailableResources(): string[];
|
|
35
|
+
hasResource(resourceName: string): boolean;
|
|
36
|
+
getResourceByName(resourceName: string): ResourceInstance | undefined;
|
|
37
|
+
isResourceLoaded(resourceName: string): boolean;
|
|
38
|
+
getCacheStats(): {
|
|
39
|
+
total: number;
|
|
40
|
+
loaded: number;
|
|
41
|
+
loadedResources: string[];
|
|
42
|
+
};
|
|
42
43
|
}
|
|
44
|
+
export {};
|
package/lib/esm/comic-vine.js
CHANGED
|
@@ -1,88 +1,68 @@
|
|
|
1
1
|
import { HttpClientFactory } from './http-client/index.js';
|
|
2
2
|
import { loadOptions } from './options/index.js';
|
|
3
3
|
import { ResourceFactory } from './resources/index.js';
|
|
4
|
+
import * as resources from './resources/resource-list.js';
|
|
5
|
+
function classNameToPropertyName(className) {
|
|
6
|
+
return className.charAt(0).toLowerCase() + className.slice(1);
|
|
7
|
+
}
|
|
4
8
|
export class ComicVine {
|
|
5
9
|
constructor(key, options) {
|
|
10
|
+
this.resourceCache = new Map();
|
|
6
11
|
const _options = loadOptions(options);
|
|
7
12
|
const httpClient = HttpClientFactory.createClient();
|
|
8
13
|
const urlBuilder = HttpClientFactory.createUrlBuilder(key, _options.baseUrl);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return this._publisher;
|
|
62
|
-
}
|
|
63
|
-
get series() {
|
|
64
|
-
return this._series;
|
|
65
|
-
}
|
|
66
|
-
get storyArc() {
|
|
67
|
-
return this._storyArc;
|
|
68
|
-
}
|
|
69
|
-
get team() {
|
|
70
|
-
return this._team;
|
|
71
|
-
}
|
|
72
|
-
get thing() {
|
|
73
|
-
return this._thing;
|
|
74
|
-
}
|
|
75
|
-
get video() {
|
|
76
|
-
return this._video;
|
|
77
|
-
}
|
|
78
|
-
get videoCategory() {
|
|
79
|
-
return this._videoCategory;
|
|
80
|
-
}
|
|
81
|
-
get videoType() {
|
|
82
|
-
return this._videoType;
|
|
83
|
-
}
|
|
84
|
-
get volume() {
|
|
85
|
-
return this._volume;
|
|
14
|
+
this.resourceFactory = new ResourceFactory(httpClient, urlBuilder);
|
|
15
|
+
// Discover available resources dynamically
|
|
16
|
+
this.resourceNames = Object.keys(resources);
|
|
17
|
+
// Return a proxy that provides lazy loading with full type safety
|
|
18
|
+
return new Proxy(this, {
|
|
19
|
+
get(target, prop) {
|
|
20
|
+
if (typeof prop === 'string' && target.isResourceProperty(prop)) {
|
|
21
|
+
return target.getResource(prop);
|
|
22
|
+
}
|
|
23
|
+
return Reflect.get(target, prop);
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
isResourceProperty(prop) {
|
|
28
|
+
// Check if this property corresponds to a known resource
|
|
29
|
+
const className = prop.charAt(0).toUpperCase() + prop.slice(1);
|
|
30
|
+
return this.resourceNames.includes(className);
|
|
31
|
+
}
|
|
32
|
+
getResource(propertyName) {
|
|
33
|
+
// Lazy loading: create resource only when first accessed
|
|
34
|
+
if (!this.resourceCache.has(propertyName)) {
|
|
35
|
+
const className = propertyName.charAt(0).toUpperCase() + propertyName.slice(1);
|
|
36
|
+
try {
|
|
37
|
+
const resource = this.resourceFactory.create(className);
|
|
38
|
+
this.resourceCache.set(propertyName, resource);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw new Error(`Failed to create resource '${className}': ${error}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return this.resourceCache.get(propertyName);
|
|
45
|
+
}
|
|
46
|
+
getAvailableResources() {
|
|
47
|
+
return this.resourceNames.map((name) => classNameToPropertyName(name));
|
|
48
|
+
}
|
|
49
|
+
hasResource(resourceName) {
|
|
50
|
+
return this.isResourceProperty(resourceName);
|
|
51
|
+
}
|
|
52
|
+
getResourceByName(resourceName) {
|
|
53
|
+
if (!this.isResourceProperty(resourceName)) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return this.getResource(resourceName);
|
|
57
|
+
}
|
|
58
|
+
isResourceLoaded(resourceName) {
|
|
59
|
+
return this.resourceCache.has(resourceName);
|
|
60
|
+
}
|
|
61
|
+
getCacheStats() {
|
|
62
|
+
const total = this.resourceNames.length;
|
|
63
|
+
const loaded = this.resourceCache.size;
|
|
64
|
+
const loadedResources = Array.from(this.resourceCache.keys());
|
|
65
|
+
return { total, loaded, loadedResources };
|
|
86
66
|
}
|
|
87
67
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxTQUFTLHVCQUF1QixDQUFDLFNBQWlCO0lBQ2hELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFXRCxNQUFNLE9BQU8sU0FBUztJQTBCcEIsWUFBWSxHQUFXLEVBQUUsT0FBcUI7UUF4QnRDLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUF5QjFELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDbkQsR0FBRyxFQUNILFFBQVEsQ0FBQyxPQUFPLENBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVuRSwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLGtFQUFrRTtRQUNsRSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixHQUFHLENBQUMsTUFBTSxFQUFFLElBQXFCO2dCQUMvQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGLENBQWMsQ0FBQztJQUNsQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBWTtRQUNyQyx5REFBeUQ7UUFDekQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxZQUFvQjtRQUN0Qyx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxTQUFTLEdBQ2IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDMUMsU0FBbUMsQ0FDcEMsQ0FBQztnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsU0FBUyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFvQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBb0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYTtRQUtYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9odHRwLWNsaWVudC9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyT3B0aW9ucywgbG9hZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzb3VyY2VGYWN0b3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzIGZyb20gJy4vcmVzb3VyY2VzL3Jlc291cmNlLWxpc3QuanMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVUb1Byb3BlcnR5TmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjbGFzc05hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjbGFzc05hbWUuc2xpY2UoMSk7XG59XG5cbnR5cGUgUmVzb3VyY2VJbnN0YW5jZSA9IFJldHVyblR5cGU8UmVzb3VyY2VGYWN0b3J5WydjcmVhdGUnXT47XG5cbi8vIENyZWF0ZSByZXNvdXJjZSBwcm9wZXJ0eSB0eXBlIG1hcHBpbmcgZHluYW1pY2FsbHlcbnR5cGUgUmVzb3VyY2VQcm9wZXJ0eU1hcCA9IHtcbiAgW0sgaW4ga2V5b2YgdHlwZW9mIHJlc291cmNlcyBhcyBVbmNhcGl0YWxpemU8Sz5dOiBJbnN0YW5jZVR5cGU8XG4gICAgKHR5cGVvZiByZXNvdXJjZXMpW0tdXG4gID47XG59O1xuXG5leHBvcnQgY2xhc3MgQ29taWNWaW5lIGltcGxlbWVudHMgUmVzb3VyY2VQcm9wZXJ0eU1hcCB7XG4gIHByaXZhdGUgcmVzb3VyY2VGYWN0b3J5OiBSZXNvdXJjZUZhY3Rvcnk7XG4gIHByaXZhdGUgcmVzb3VyY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvdXJjZUluc3RhbmNlPigpO1xuICBwcml2YXRlIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8vIFR5cGVTY3JpcHQgcHJvcGVydHkgZGVjbGFyYXRpb25zIGZvciBzdGF0aWMgdHlwaW5nICh3aWxsIGJlIHByb3ZpZGVkIGJ5IFByb3h5KVxuICBkZWNsYXJlIHJlYWRvbmx5IGNoYXJhY3RlcjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY2hhcmFjdGVyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29uY2VwdDogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY29uY2VwdCddO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVwaXNvZGU6IFJlc291cmNlUHJvcGVydHlNYXBbJ2VwaXNvZGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBpc3N1ZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnaXNzdWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBsb2NhdGlvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbG9jYXRpb24nXTtcbiAgZGVjbGFyZSByZWFkb25seSBtb3ZpZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbW92aWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBvcmlnaW46IFJlc291cmNlUHJvcGVydHlNYXBbJ29yaWdpbiddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHBlcnNvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsncGVyc29uJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcG93ZXI6IFJlc291cmNlUHJvcGVydHlNYXBbJ3Bvd2VyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHJvbW86IFJlc291cmNlUHJvcGVydHlNYXBbJ3Byb21vJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHVibGlzaGVyOiBSZXNvdXJjZVByb3BlcnR5TWFwWydwdWJsaXNoZXInXTtcbiAgZGVjbGFyZSByZWFkb25seSBzZXJpZXM6IFJlc291cmNlUHJvcGVydHlNYXBbJ3NlcmllcyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHN0b3J5QXJjOiBSZXNvdXJjZVByb3BlcnR5TWFwWydzdG9yeUFyYyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHRlYW06IFJlc291cmNlUHJvcGVydHlNYXBbJ3RlYW0nXTtcbiAgZGVjbGFyZSByZWFkb25seSB0aGluZzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndGhpbmcnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlbzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndmlkZW8nXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlb0NhdGVnb3J5OiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb0NhdGVnb3J5J107XG4gIGRlY2xhcmUgcmVhZG9ubHkgdmlkZW9UeXBlOiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb1R5cGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2b2x1bWU6IFJlc291cmNlUHJvcGVydHlNYXBbJ3ZvbHVtZSddO1xuXG4gIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBvcHRpb25zPzogdXNlck9wdGlvbnMpIHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IGxvYWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBIdHRwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoKTtcbiAgICBjb25zdCB1cmxCdWlsZGVyID0gSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlVXJsQnVpbGRlcihcbiAgICAgIGtleSxcbiAgICAgIF9vcHRpb25zLmJhc2VVcmwsXG4gICAgKTtcbiAgICB0aGlzLnJlc291cmNlRmFjdG9yeSA9IG5ldyBSZXNvdXJjZUZhY3RvcnkoaHR0cENsaWVudCwgdXJsQnVpbGRlcik7XG5cbiAgICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcmVzb3VyY2VzIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5yZXNvdXJjZU5hbWVzID0gT2JqZWN0LmtleXMocmVzb3VyY2VzKTtcblxuICAgIC8vIFJldHVybiBhIHByb3h5IHRoYXQgcHJvdmlkZXMgbGF6eSBsb2FkaW5nIHdpdGggZnVsbCB0eXBlIHNhZmV0eVxuICAgIHJldHVybiBuZXcgUHJveHkodGhpcywge1xuICAgICAgZ2V0KHRhcmdldCwgcHJvcDogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0LmlzUmVzb3VyY2VQcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuZ2V0UmVzb3VyY2UocHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG4gICAgICB9LFxuICAgIH0pIGFzIENvbWljVmluZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNvdXJjZVByb3BlcnR5KHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gYSBrbm93biByZXNvdXJjZVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlTmFtZXMuaW5jbHVkZXMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzb3VyY2UocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBSZXNvdXJjZUluc3RhbmNlIHtcbiAgICAvLyBMYXp5IGxvYWRpbmc6IGNyZWF0ZSByZXNvdXJjZSBvbmx5IHdoZW4gZmlyc3QgYWNjZXNzZWRcbiAgICBpZiAoIXRoaXMucmVzb3VyY2VDYWNoZS5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lID1cbiAgICAgICAgcHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHlOYW1lLnNsaWNlKDEpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRmFjdG9yeS5jcmVhdGUoXG4gICAgICAgICAgY2xhc3NOYW1lIGFzIGtleW9mIHR5cGVvZiByZXNvdXJjZXMsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzb3VyY2VDYWNoZS5zZXQocHJvcGVydHlOYW1lLCByZXNvdXJjZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcmVzb3VyY2UgJyR7Y2xhc3NOYW1lfSc6ICR7ZXJyb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuZ2V0KHByb3BlcnR5TmFtZSkhO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmxlUmVzb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZU5hbWVzLm1hcCgobmFtZSkgPT4gY2xhc3NOYW1lVG9Qcm9wZXJ0eU5hbWUobmFtZSkpO1xuICB9XG5cbiAgaGFzUmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc291cmNlUHJvcGVydHkocmVzb3VyY2VOYW1lKTtcbiAgfVxuXG4gIGdldFJlc291cmNlQnlOYW1lKHJlc291cmNlTmFtZTogc3RyaW5nKTogUmVzb3VyY2VJbnN0YW5jZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzb3VyY2VQcm9wZXJ0eShyZXNvdXJjZU5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpO1xuICB9XG5cbiAgaXNSZXNvdXJjZUxvYWRlZChyZXNvdXJjZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuaGFzKHJlc291cmNlTmFtZSk7XG4gIH1cblxuICBnZXRDYWNoZVN0YXRzKCk6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIGxvYWRlZFJlc291cmNlczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5yZXNvdXJjZU5hbWVzLmxlbmd0aDtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLnJlc291cmNlQ2FjaGUuc2l6ZTtcbiAgICBjb25zdCBsb2FkZWRSZXNvdXJjZXMgPSBBcnJheS5mcm9tKHRoaXMucmVzb3VyY2VDYWNoZS5rZXlzKCkpO1xuICAgIHJldHVybiB7IHRvdGFsLCBsb2FkZWQsIGxvYWRlZFJlc291cmNlcyB9O1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED