@lycoristech/azurapi 0.0.3 → 0.0.4
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/data/ships.json +1376 -1375
- package/data/version.json +1 -1
- package/dist/cjs/normalize/skins.js +33 -9
- package/dist/normalize/skins.d.ts.map +1 -1
- package/dist/normalize/skins.js +33 -9
- package/dist/normalize/skins.js.map +1 -1
- package/package.json +1 -1
package/data/version.json
CHANGED
|
@@ -27,19 +27,42 @@ function hasLive2d(l2dAnimations) {
|
|
|
27
27
|
function isAlwaysAvailable(time) {
|
|
28
28
|
return time === "always";
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Pick the preferred main-image painting suffix.
|
|
32
|
+
*
|
|
33
|
+
* 1. {painting}_rw — character layer without background (preferred display)
|
|
34
|
+
* 2. {painting} — plain EN file (fallback)
|
|
35
|
+
*
|
|
36
|
+
* `_hx` variants are never considered. The skin template's `painting` values
|
|
37
|
+
* are verified to never contain `_hx`, so checking a literal `_rw` suffix
|
|
38
|
+
* can't accidentally resolve to an `_hx_rw` / `_rw_hx` sibling.
|
|
39
|
+
*
|
|
40
|
+
* When `available` is undefined we fall back to the plain painting — the
|
|
41
|
+
* build can't prove a suffix exists without a directory scan, and emitting
|
|
42
|
+
* a URL that 404s is worse than skipping the preference.
|
|
43
|
+
*/
|
|
44
|
+
function preferredMainSuffix(painting, available) {
|
|
45
|
+
if (available === undefined)
|
|
46
|
+
return "";
|
|
47
|
+
const lower = painting.toLowerCase();
|
|
48
|
+
if (available.has(`${lower}_rw`))
|
|
49
|
+
return "_rw";
|
|
50
|
+
return "";
|
|
51
|
+
}
|
|
30
52
|
/**
|
|
31
53
|
* Build the variant images map for a skin painting.
|
|
32
54
|
*
|
|
33
55
|
* Variant mapping:
|
|
34
|
-
* {name}.webp → "
|
|
56
|
+
* {name}.webp → "censored" (EN-region file, may be censored, WITH background)
|
|
35
57
|
* {name}_rw.webp → "censored_nobg" (EN character layer without background)
|
|
36
58
|
* {name}_n.webp → "uncensored" (JP/original version)
|
|
37
59
|
* {name}_n_rw.webp → "uncensored_nobg" (JP character without background)
|
|
38
60
|
* {name}_bj.webp → "background" (background layer only)
|
|
39
61
|
*
|
|
40
|
-
*
|
|
62
|
+
* `default` is an alias for the preferred main image (see `preferredMainSuffix`),
|
|
63
|
+
* which biases toward `_rw` when available and falls back to the plain file.
|
|
41
64
|
*/
|
|
42
|
-
function buildVariantImages(painting, baseUrl, available) {
|
|
65
|
+
function buildVariantImages(painting, baseUrl, available, mainSuffix) {
|
|
43
66
|
const lower = painting.toLowerCase();
|
|
44
67
|
const has = (suffix) => {
|
|
45
68
|
const key = suffix === "" ? lower : `${lower}${suffix}`;
|
|
@@ -47,10 +70,10 @@ function buildVariantImages(painting, baseUrl, available) {
|
|
|
47
70
|
};
|
|
48
71
|
const url = (suffix) => `${baseUrl}/${painting}${suffix}.webp`;
|
|
49
72
|
const images = {};
|
|
73
|
+
if (has(mainSuffix))
|
|
74
|
+
images.default = url(mainSuffix);
|
|
50
75
|
if (has(""))
|
|
51
|
-
images.
|
|
52
|
-
if (has(""))
|
|
53
|
-
images.censored = url(""); // alias for default
|
|
76
|
+
images.censored = url("");
|
|
54
77
|
if (has("_rw"))
|
|
55
78
|
images.censored_nobg = url("_rw");
|
|
56
79
|
if (has("_n"))
|
|
@@ -88,8 +111,9 @@ function normalizeSkins(inputs) {
|
|
|
88
111
|
: (row.desc?.trim().length ?? 0) > 0
|
|
89
112
|
? (row.desc?.trim() ?? "(unnamed)")
|
|
90
113
|
: "(unnamed)";
|
|
91
|
-
// image
|
|
92
|
-
const
|
|
114
|
+
// Pick the preferred main image suffix (prefers _rw over plain).
|
|
115
|
+
const mainSuffix = preferredMainSuffix(row.painting, availablePaintings);
|
|
116
|
+
const image = `${base}/${row.painting}${mainSuffix}.webp`;
|
|
93
117
|
// shop info
|
|
94
118
|
const shopId = row.shop_id;
|
|
95
119
|
let cost;
|
|
@@ -134,7 +158,7 @@ function normalizeSkins(inputs) {
|
|
|
134
158
|
enClient: "Yes",
|
|
135
159
|
};
|
|
136
160
|
// Build variant images object
|
|
137
|
-
const images = buildVariantImages(row.painting, base, availablePaintings);
|
|
161
|
+
const images = buildVariantImages(row.painting, base, availablePaintings, mainSuffix);
|
|
138
162
|
skins.push({ name, image, images, info });
|
|
139
163
|
}
|
|
140
164
|
return { skins };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skins.d.ts","sourceRoot":"","sources":["../../src/normalize/skins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAOhC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"skins.d.ts","sourceRoot":"","sources":["../../src/normalize/skins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAOhC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC;AAgGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;CAAE,CAwF5E"}
|
package/dist/normalize/skins.js
CHANGED
|
@@ -24,19 +24,42 @@ function hasLive2d(l2dAnimations) {
|
|
|
24
24
|
function isAlwaysAvailable(time) {
|
|
25
25
|
return time === "always";
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Pick the preferred main-image painting suffix.
|
|
29
|
+
*
|
|
30
|
+
* 1. {painting}_rw — character layer without background (preferred display)
|
|
31
|
+
* 2. {painting} — plain EN file (fallback)
|
|
32
|
+
*
|
|
33
|
+
* `_hx` variants are never considered. The skin template's `painting` values
|
|
34
|
+
* are verified to never contain `_hx`, so checking a literal `_rw` suffix
|
|
35
|
+
* can't accidentally resolve to an `_hx_rw` / `_rw_hx` sibling.
|
|
36
|
+
*
|
|
37
|
+
* When `available` is undefined we fall back to the plain painting — the
|
|
38
|
+
* build can't prove a suffix exists without a directory scan, and emitting
|
|
39
|
+
* a URL that 404s is worse than skipping the preference.
|
|
40
|
+
*/
|
|
41
|
+
function preferredMainSuffix(painting, available) {
|
|
42
|
+
if (available === undefined)
|
|
43
|
+
return "";
|
|
44
|
+
const lower = painting.toLowerCase();
|
|
45
|
+
if (available.has(`${lower}_rw`))
|
|
46
|
+
return "_rw";
|
|
47
|
+
return "";
|
|
48
|
+
}
|
|
27
49
|
/**
|
|
28
50
|
* Build the variant images map for a skin painting.
|
|
29
51
|
*
|
|
30
52
|
* Variant mapping:
|
|
31
|
-
* {name}.webp → "
|
|
53
|
+
* {name}.webp → "censored" (EN-region file, may be censored, WITH background)
|
|
32
54
|
* {name}_rw.webp → "censored_nobg" (EN character layer without background)
|
|
33
55
|
* {name}_n.webp → "uncensored" (JP/original version)
|
|
34
56
|
* {name}_n_rw.webp → "uncensored_nobg" (JP character without background)
|
|
35
57
|
* {name}_bj.webp → "background" (background layer only)
|
|
36
58
|
*
|
|
37
|
-
*
|
|
59
|
+
* `default` is an alias for the preferred main image (see `preferredMainSuffix`),
|
|
60
|
+
* which biases toward `_rw` when available and falls back to the plain file.
|
|
38
61
|
*/
|
|
39
|
-
function buildVariantImages(painting, baseUrl, available) {
|
|
62
|
+
function buildVariantImages(painting, baseUrl, available, mainSuffix) {
|
|
40
63
|
const lower = painting.toLowerCase();
|
|
41
64
|
const has = (suffix) => {
|
|
42
65
|
const key = suffix === "" ? lower : `${lower}${suffix}`;
|
|
@@ -44,10 +67,10 @@ function buildVariantImages(painting, baseUrl, available) {
|
|
|
44
67
|
};
|
|
45
68
|
const url = (suffix) => `${baseUrl}/${painting}${suffix}.webp`;
|
|
46
69
|
const images = {};
|
|
70
|
+
if (has(mainSuffix))
|
|
71
|
+
images.default = url(mainSuffix);
|
|
47
72
|
if (has(""))
|
|
48
|
-
images.
|
|
49
|
-
if (has(""))
|
|
50
|
-
images.censored = url(""); // alias for default
|
|
73
|
+
images.censored = url("");
|
|
51
74
|
if (has("_rw"))
|
|
52
75
|
images.censored_nobg = url("_rw");
|
|
53
76
|
if (has("_n"))
|
|
@@ -85,8 +108,9 @@ export function normalizeSkins(inputs) {
|
|
|
85
108
|
: (row.desc?.trim().length ?? 0) > 0
|
|
86
109
|
? (row.desc?.trim() ?? "(unnamed)")
|
|
87
110
|
: "(unnamed)";
|
|
88
|
-
// image
|
|
89
|
-
const
|
|
111
|
+
// Pick the preferred main image suffix (prefers _rw over plain).
|
|
112
|
+
const mainSuffix = preferredMainSuffix(row.painting, availablePaintings);
|
|
113
|
+
const image = `${base}/${row.painting}${mainSuffix}.webp`;
|
|
90
114
|
// shop info
|
|
91
115
|
const shopId = row.shop_id;
|
|
92
116
|
let cost;
|
|
@@ -131,7 +155,7 @@ export function normalizeSkins(inputs) {
|
|
|
131
155
|
enClient: "Yes",
|
|
132
156
|
};
|
|
133
157
|
// Build variant images object
|
|
134
|
-
const images = buildVariantImages(row.painting, base, availablePaintings);
|
|
158
|
+
const images = buildVariantImages(row.painting, base, availablePaintings, mainSuffix);
|
|
135
159
|
skins.push({ name, image, images, info });
|
|
136
160
|
}
|
|
137
161
|
return { skins };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skins.js","sourceRoot":"","sources":["../../src/normalize/skins.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAe7C,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC;;;GAGG;AACH,SAAS,SAAS,CAAC,aAAsB;IACvC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,aAAwC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"skins.js","sourceRoot":"","sources":["../../src/normalize/skins.ts"],"names":[],"mappings":"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"}
|