comic-vine-sdk 1.3.0 → 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 -5
- package/CONTRIBUTING.md +294 -0
- package/README.md +434 -12
- 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 +2 -2
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
|
@@ -66,12 +66,12 @@
|
|
|
66
66
|
"metadata"
|
|
67
67
|
],
|
|
68
68
|
"engines": {
|
|
69
|
-
"node": ">=
|
|
69
|
+
"node": ">= 20.0.0"
|
|
70
70
|
},
|
|
71
71
|
"main": "lib/cjs/index.js",
|
|
72
72
|
"license": "MIT",
|
|
73
73
|
"homepage": "https://github.com/AllyMurray/comic-vine#readme",
|
|
74
|
-
"version": "1.3.
|
|
74
|
+
"version": "1.3.2",
|
|
75
75
|
"bugs": {
|
|
76
76
|
"url": "https://github.com/AllyMurray/comic-vine/issues"
|
|
77
77
|
},
|