@empty-sekai/allium-deck-wasm 0.0.5 → 0.0.10
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/allium_deck.d.ts +88 -9
- package/allium_deck.js +379 -29
- package/allium_deck_bg.wasm +0 -0
- package/package.json +7 -4
package/allium_deck.d.ts
CHANGED
|
@@ -1,25 +1,104 @@
|
|
|
1
1
|
/* tslint:disable */
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* 解析一次用户数据、多次复用的句柄。
|
|
6
|
+
*
|
|
7
|
+
* `region` 词表:jp/tw/en/kr/cn。句柄与 masterdata 生命周期解耦:
|
|
8
|
+
* masterdata 重载后旧句柄仍可用,但数据视图可能过期,由调用方自行重载。
|
|
9
|
+
*/
|
|
10
|
+
export class UserDataHandle {
|
|
11
|
+
private constructor();
|
|
12
|
+
free(): void;
|
|
13
|
+
[Symbol.dispose](): void;
|
|
14
|
+
readonly region: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 精确打歌分:给定战力/技能/谱面逐 note 计算。
|
|
19
|
+
*
|
|
20
|
+
* options:`{ live_type, power, skills: [..], music_score, fever_music_score?,
|
|
21
|
+
* multi_sum_power? }`;`music_score`/`fever_music_score` 接受 JSON 字符串或对象。
|
|
22
|
+
*/
|
|
23
|
+
export function calculate_exact_live(options_json: string): string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 创建用户数据句柄:解析成本只付一次,后续 `recommend_with_user_data`
|
|
27
|
+
* 直接复用(解析成本只付一次)。
|
|
28
|
+
*/
|
|
29
|
+
export function create_user_data(user_json: string, region: string): UserDataHandle;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* World Bloom 支援卡逐卡加成。
|
|
33
|
+
*
|
|
34
|
+
* options:`{ user_data / user_data_str, event_id | world_bloom_event_turn |
|
|
35
|
+
* world_bloom_finale_turn, world_bloom_character_id?, event_unit?,
|
|
36
|
+
* forced_leader_character_id?, support_master_max?, support_skill_max?,
|
|
37
|
+
* filter_other_unit? }`;返回按 (bonus 降序, card_id 升序) 排序的数组。
|
|
38
|
+
*/
|
|
39
|
+
export function get_world_bloom_support_cards(options_json: string): string;
|
|
40
|
+
|
|
4
41
|
export function init(): void;
|
|
5
42
|
|
|
6
43
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
44
|
+
* 载入 masterdata:`masterdata_json` 形如
|
|
45
|
+
* `{"cards": "<cards.json 原文>", "events": "...", ...}`(各表 JSON 原文,
|
|
46
|
+
* 键名裸表名或带 `.json` 后缀均可),`music_metas_json` 为音乐元数据表
|
|
47
|
+
* 原文(可为空字符串)。
|
|
48
|
+
*
|
|
49
|
+
* 数据在引擎内做一次「raw JSON → 扁平结构」转换并缓存,之后每次
|
|
50
|
+
* recommend 零重复成本。辅助表(areas/areaItems/shopItems/ingameNotes/
|
|
51
|
+
* ingameCombos)缺省时对应辅助接口报「未载入」错误,不影响组卡。
|
|
52
|
+
*/
|
|
53
|
+
export function load_masterdata(masterdata_json: string, music_metas_json: string): void;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* 组卡入口。需先 `load_masterdata`。`user_json`/`params_json` 为上传链路
|
|
57
|
+
* camelCase 格式;返回卡组 JSON(真实游戏卡 ID + 展示指标),条数由
|
|
58
|
+
* params 的 `limit` 决定(缺省 10,上限 30)。
|
|
59
|
+
*/
|
|
60
|
+
export function recommend(user_json: string, params_json: string): string;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 曲目推荐:对一张已定卡组给全部曲目/难度打分排序。
|
|
64
|
+
*
|
|
65
|
+
* options:`{ deck, live_type, event_type?/event_id?, skill_order_choose_strategy?,
|
|
66
|
+
* specific_skill_order?, multi_live_teammate_score_up?, multi_live_teammate_power? }`。
|
|
67
|
+
*/
|
|
68
|
+
export function recommendMusic(options_json: string): string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* 组卡入口(句柄式):options 即 `recommend` 的 `params_json`。
|
|
72
|
+
*/
|
|
73
|
+
export function recommendWithUserData(options_json: string, handle: UserDataHandle): string;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* 区域道具推荐。
|
|
77
|
+
*
|
|
78
|
+
* options:`{ user_data / user_data_str, card_ids: [..] }`;
|
|
79
|
+
* 返回按 `power_per_coin` 降序的升级建议数组。
|
|
9
80
|
*/
|
|
10
|
-
export function
|
|
81
|
+
export function recommend_area_items(options_json: string): string;
|
|
11
82
|
|
|
12
83
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
13
84
|
|
|
14
85
|
export interface InitOutput {
|
|
15
86
|
readonly memory: WebAssembly.Memory;
|
|
87
|
+
readonly __wbg_userdatahandle_free: (a: number, b: number) => void;
|
|
88
|
+
readonly calculate_exact_live: (a: number, b: number, c: number) => void;
|
|
89
|
+
readonly create_user_data: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
90
|
+
readonly get_world_bloom_support_cards: (a: number, b: number, c: number) => void;
|
|
16
91
|
readonly init: () => void;
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
21
|
-
readonly
|
|
22
|
-
readonly
|
|
92
|
+
readonly load_masterdata: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
93
|
+
readonly recommend: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
94
|
+
readonly recommendMusic: (a: number, b: number, c: number) => void;
|
|
95
|
+
readonly recommendWithUserData: (a: number, b: number, c: number, d: number) => void;
|
|
96
|
+
readonly recommend_area_items: (a: number, b: number, c: number) => void;
|
|
97
|
+
readonly userdatahandle_region: (a: number, b: number) => void;
|
|
98
|
+
readonly __wbindgen_export: (a: number, b: number, c: number) => void;
|
|
99
|
+
readonly __wbindgen_export2: (a: number, b: number) => number;
|
|
100
|
+
readonly __wbindgen_export3: (a: number, b: number, c: number, d: number) => number;
|
|
101
|
+
readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
|
|
23
102
|
readonly __wbindgen_start: () => void;
|
|
24
103
|
}
|
|
25
104
|
|
package/allium_deck.js
CHANGED
|
@@ -1,41 +1,333 @@
|
|
|
1
1
|
/* @ts-self-types="./allium_deck.d.ts" */
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* 解析一次用户数据、多次复用的句柄。
|
|
5
|
+
*
|
|
6
|
+
* `region` 词表:jp/tw/en/kr/cn。句柄与 masterdata 生命周期解耦:
|
|
7
|
+
* masterdata 重载后旧句柄仍可用,但数据视图可能过期,由调用方自行重载。
|
|
8
|
+
*/
|
|
9
|
+
export class UserDataHandle {
|
|
10
|
+
static __wrap(ptr) {
|
|
11
|
+
const obj = Object.create(UserDataHandle.prototype);
|
|
12
|
+
obj.__wbg_ptr = ptr;
|
|
13
|
+
UserDataHandleFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
__destroy_into_raw() {
|
|
17
|
+
const ptr = this.__wbg_ptr;
|
|
18
|
+
this.__wbg_ptr = 0;
|
|
19
|
+
UserDataHandleFinalization.unregister(this);
|
|
20
|
+
return ptr;
|
|
21
|
+
}
|
|
22
|
+
free() {
|
|
23
|
+
const ptr = this.__destroy_into_raw();
|
|
24
|
+
wasm.__wbg_userdatahandle_free(ptr, 0);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @returns {string}
|
|
28
|
+
*/
|
|
29
|
+
get region() {
|
|
30
|
+
let deferred1_0;
|
|
31
|
+
let deferred1_1;
|
|
32
|
+
try {
|
|
33
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
34
|
+
wasm.userdatahandle_region(retptr, this.__wbg_ptr);
|
|
35
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
36
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
37
|
+
deferred1_0 = r0;
|
|
38
|
+
deferred1_1 = r1;
|
|
39
|
+
return getStringFromWasm0(r0, r1);
|
|
40
|
+
} finally {
|
|
41
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
42
|
+
wasm.__wbindgen_export(deferred1_0, deferred1_1, 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (Symbol.dispose) UserDataHandle.prototype[Symbol.dispose] = UserDataHandle.prototype.free;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 精确打歌分:给定战力/技能/谱面逐 note 计算。
|
|
50
|
+
*
|
|
51
|
+
* options:`{ live_type, power, skills: [..], music_score, fever_music_score?,
|
|
52
|
+
* multi_sum_power? }`;`music_score`/`fever_music_score` 接受 JSON 字符串或对象。
|
|
53
|
+
* @param {string} options_json
|
|
54
|
+
* @returns {string}
|
|
55
|
+
*/
|
|
56
|
+
export function calculate_exact_live(options_json) {
|
|
57
|
+
let deferred3_0;
|
|
58
|
+
let deferred3_1;
|
|
59
|
+
try {
|
|
60
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
61
|
+
const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
62
|
+
const len0 = WASM_VECTOR_LEN;
|
|
63
|
+
wasm.calculate_exact_live(retptr, ptr0, len0);
|
|
64
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
65
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
66
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
67
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
68
|
+
var ptr2 = r0;
|
|
69
|
+
var len2 = r1;
|
|
70
|
+
if (r3) {
|
|
71
|
+
ptr2 = 0; len2 = 0;
|
|
72
|
+
throw takeObject(r2);
|
|
73
|
+
}
|
|
74
|
+
deferred3_0 = ptr2;
|
|
75
|
+
deferred3_1 = len2;
|
|
76
|
+
return getStringFromWasm0(ptr2, len2);
|
|
77
|
+
} finally {
|
|
78
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
79
|
+
wasm.__wbindgen_export(deferred3_0, deferred3_1, 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* 创建用户数据句柄:解析成本只付一次,后续 `recommend_with_user_data`
|
|
85
|
+
* 直接复用(解析成本只付一次)。
|
|
86
|
+
* @param {string} user_json
|
|
87
|
+
* @param {string} region
|
|
88
|
+
* @returns {UserDataHandle}
|
|
89
|
+
*/
|
|
90
|
+
export function create_user_data(user_json, region) {
|
|
91
|
+
try {
|
|
92
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
93
|
+
const ptr0 = passStringToWasm0(user_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
94
|
+
const len0 = WASM_VECTOR_LEN;
|
|
95
|
+
const ptr1 = passStringToWasm0(region, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
96
|
+
const len1 = WASM_VECTOR_LEN;
|
|
97
|
+
wasm.create_user_data(retptr, ptr0, len0, ptr1, len1);
|
|
98
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
99
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
100
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
101
|
+
if (r2) {
|
|
102
|
+
throw takeObject(r1);
|
|
103
|
+
}
|
|
104
|
+
return UserDataHandle.__wrap(r0);
|
|
105
|
+
} finally {
|
|
106
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* World Bloom 支援卡逐卡加成。
|
|
112
|
+
*
|
|
113
|
+
* options:`{ user_data / user_data_str, event_id | world_bloom_event_turn |
|
|
114
|
+
* world_bloom_finale_turn, world_bloom_character_id?, event_unit?,
|
|
115
|
+
* forced_leader_character_id?, support_master_max?, support_skill_max?,
|
|
116
|
+
* filter_other_unit? }`;返回按 (bonus 降序, card_id 升序) 排序的数组。
|
|
117
|
+
* @param {string} options_json
|
|
118
|
+
* @returns {string}
|
|
119
|
+
*/
|
|
120
|
+
export function get_world_bloom_support_cards(options_json) {
|
|
121
|
+
let deferred3_0;
|
|
122
|
+
let deferred3_1;
|
|
123
|
+
try {
|
|
124
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
125
|
+
const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
126
|
+
const len0 = WASM_VECTOR_LEN;
|
|
127
|
+
wasm.get_world_bloom_support_cards(retptr, ptr0, len0);
|
|
128
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
129
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
130
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
131
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
132
|
+
var ptr2 = r0;
|
|
133
|
+
var len2 = r1;
|
|
134
|
+
if (r3) {
|
|
135
|
+
ptr2 = 0; len2 = 0;
|
|
136
|
+
throw takeObject(r2);
|
|
137
|
+
}
|
|
138
|
+
deferred3_0 = ptr2;
|
|
139
|
+
deferred3_1 = len2;
|
|
140
|
+
return getStringFromWasm0(ptr2, len2);
|
|
141
|
+
} finally {
|
|
142
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
143
|
+
wasm.__wbindgen_export(deferred3_0, deferred3_1, 1);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
3
147
|
export function init() {
|
|
4
148
|
wasm.init();
|
|
5
149
|
}
|
|
6
150
|
|
|
7
151
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
152
|
+
* 载入 masterdata:`masterdata_json` 形如
|
|
153
|
+
* `{"cards": "<cards.json 原文>", "events": "...", ...}`(各表 JSON 原文,
|
|
154
|
+
* 键名裸表名或带 `.json` 后缀均可),`music_metas_json` 为音乐元数据表
|
|
155
|
+
* 原文(可为空字符串)。
|
|
156
|
+
*
|
|
157
|
+
* 数据在引擎内做一次「raw JSON → 扁平结构」转换并缓存,之后每次
|
|
158
|
+
* recommend 零重复成本。辅助表(areas/areaItems/shopItems/ingameNotes/
|
|
159
|
+
* ingameCombos)缺省时对应辅助接口报「未载入」错误,不影响组卡。
|
|
160
|
+
* @param {string} masterdata_json
|
|
161
|
+
* @param {string} music_metas_json
|
|
162
|
+
*/
|
|
163
|
+
export function load_masterdata(masterdata_json, music_metas_json) {
|
|
164
|
+
try {
|
|
165
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
166
|
+
const ptr0 = passStringToWasm0(masterdata_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
167
|
+
const len0 = WASM_VECTOR_LEN;
|
|
168
|
+
const ptr1 = passStringToWasm0(music_metas_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
169
|
+
const len1 = WASM_VECTOR_LEN;
|
|
170
|
+
wasm.load_masterdata(retptr, ptr0, len0, ptr1, len1);
|
|
171
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
172
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
173
|
+
if (r1) {
|
|
174
|
+
throw takeObject(r0);
|
|
175
|
+
}
|
|
176
|
+
} finally {
|
|
177
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* 组卡入口。需先 `load_masterdata`。`user_json`/`params_json` 为上传链路
|
|
183
|
+
* camelCase 格式;返回卡组 JSON(真实游戏卡 ID + 展示指标),条数由
|
|
184
|
+
* params 的 `limit` 决定(缺省 10,上限 30)。
|
|
10
185
|
* @param {string} user_json
|
|
11
186
|
* @param {string} params_json
|
|
12
187
|
* @returns {string}
|
|
13
188
|
*/
|
|
14
|
-
export function
|
|
189
|
+
export function recommend(user_json, params_json) {
|
|
15
190
|
let deferred4_0;
|
|
16
191
|
let deferred4_1;
|
|
17
192
|
try {
|
|
18
|
-
const
|
|
193
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
194
|
+
const ptr0 = passStringToWasm0(user_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
19
195
|
const len0 = WASM_VECTOR_LEN;
|
|
20
|
-
const ptr1 = passStringToWasm0(params_json, wasm.
|
|
196
|
+
const ptr1 = passStringToWasm0(params_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
21
197
|
const len1 = WASM_VECTOR_LEN;
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
|
|
198
|
+
wasm.recommend(retptr, ptr0, len0, ptr1, len1);
|
|
199
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
200
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
201
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
202
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
203
|
+
var ptr3 = r0;
|
|
204
|
+
var len3 = r1;
|
|
205
|
+
if (r3) {
|
|
26
206
|
ptr3 = 0; len3 = 0;
|
|
27
|
-
throw
|
|
207
|
+
throw takeObject(r2);
|
|
28
208
|
}
|
|
29
209
|
deferred4_0 = ptr3;
|
|
30
210
|
deferred4_1 = len3;
|
|
31
211
|
return getStringFromWasm0(ptr3, len3);
|
|
32
212
|
} finally {
|
|
33
|
-
wasm.
|
|
213
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
214
|
+
wasm.__wbindgen_export(deferred4_0, deferred4_1, 1);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* 曲目推荐:对一张已定卡组给全部曲目/难度打分排序。
|
|
220
|
+
*
|
|
221
|
+
* options:`{ deck, live_type, event_type?/event_id?, skill_order_choose_strategy?,
|
|
222
|
+
* specific_skill_order?, multi_live_teammate_score_up?, multi_live_teammate_power? }`。
|
|
223
|
+
* @param {string} options_json
|
|
224
|
+
* @returns {string}
|
|
225
|
+
*/
|
|
226
|
+
export function recommendMusic(options_json) {
|
|
227
|
+
let deferred3_0;
|
|
228
|
+
let deferred3_1;
|
|
229
|
+
try {
|
|
230
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
231
|
+
const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
232
|
+
const len0 = WASM_VECTOR_LEN;
|
|
233
|
+
wasm.recommendMusic(retptr, ptr0, len0);
|
|
234
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
235
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
236
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
237
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
238
|
+
var ptr2 = r0;
|
|
239
|
+
var len2 = r1;
|
|
240
|
+
if (r3) {
|
|
241
|
+
ptr2 = 0; len2 = 0;
|
|
242
|
+
throw takeObject(r2);
|
|
243
|
+
}
|
|
244
|
+
deferred3_0 = ptr2;
|
|
245
|
+
deferred3_1 = len2;
|
|
246
|
+
return getStringFromWasm0(ptr2, len2);
|
|
247
|
+
} finally {
|
|
248
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
249
|
+
wasm.__wbindgen_export(deferred3_0, deferred3_1, 1);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* 组卡入口(句柄式):options 即 `recommend` 的 `params_json`。
|
|
255
|
+
* @param {string} options_json
|
|
256
|
+
* @param {UserDataHandle} handle
|
|
257
|
+
* @returns {string}
|
|
258
|
+
*/
|
|
259
|
+
export function recommendWithUserData(options_json, handle) {
|
|
260
|
+
let deferred3_0;
|
|
261
|
+
let deferred3_1;
|
|
262
|
+
try {
|
|
263
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
264
|
+
const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
265
|
+
const len0 = WASM_VECTOR_LEN;
|
|
266
|
+
_assertClass(handle, UserDataHandle);
|
|
267
|
+
wasm.recommendWithUserData(retptr, ptr0, len0, handle.__wbg_ptr);
|
|
268
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
269
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
270
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
271
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
272
|
+
var ptr2 = r0;
|
|
273
|
+
var len2 = r1;
|
|
274
|
+
if (r3) {
|
|
275
|
+
ptr2 = 0; len2 = 0;
|
|
276
|
+
throw takeObject(r2);
|
|
277
|
+
}
|
|
278
|
+
deferred3_0 = ptr2;
|
|
279
|
+
deferred3_1 = len2;
|
|
280
|
+
return getStringFromWasm0(ptr2, len2);
|
|
281
|
+
} finally {
|
|
282
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
283
|
+
wasm.__wbindgen_export(deferred3_0, deferred3_1, 1);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* 区域道具推荐。
|
|
289
|
+
*
|
|
290
|
+
* options:`{ user_data / user_data_str, card_ids: [..] }`;
|
|
291
|
+
* 返回按 `power_per_coin` 降序的升级建议数组。
|
|
292
|
+
* @param {string} options_json
|
|
293
|
+
* @returns {string}
|
|
294
|
+
*/
|
|
295
|
+
export function recommend_area_items(options_json) {
|
|
296
|
+
let deferred3_0;
|
|
297
|
+
let deferred3_1;
|
|
298
|
+
try {
|
|
299
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
300
|
+
const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
301
|
+
const len0 = WASM_VECTOR_LEN;
|
|
302
|
+
wasm.recommend_area_items(retptr, ptr0, len0);
|
|
303
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
304
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
305
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
306
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
307
|
+
var ptr2 = r0;
|
|
308
|
+
var len2 = r1;
|
|
309
|
+
if (r3) {
|
|
310
|
+
ptr2 = 0; len2 = 0;
|
|
311
|
+
throw takeObject(r2);
|
|
312
|
+
}
|
|
313
|
+
deferred3_0 = ptr2;
|
|
314
|
+
deferred3_1 = len2;
|
|
315
|
+
return getStringFromWasm0(ptr2, len2);
|
|
316
|
+
} finally {
|
|
317
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
318
|
+
wasm.__wbindgen_export(deferred3_0, deferred3_1, 1);
|
|
34
319
|
}
|
|
35
320
|
}
|
|
36
321
|
function __wbg_get_imports() {
|
|
37
322
|
const import0 = {
|
|
38
323
|
__proto__: null,
|
|
324
|
+
__wbg___wbindgen_is_undefined_c05833b95a3cf397: function(arg0) {
|
|
325
|
+
const ret = getObject(arg0) === undefined;
|
|
326
|
+
return ret;
|
|
327
|
+
},
|
|
328
|
+
__wbg___wbindgen_throw_344f42d3211c4765: function(arg0, arg1) {
|
|
329
|
+
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
330
|
+
},
|
|
39
331
|
__wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {
|
|
40
332
|
let deferred0_0;
|
|
41
333
|
let deferred0_1;
|
|
@@ -44,37 +336,59 @@ function __wbg_get_imports() {
|
|
|
44
336
|
deferred0_1 = arg1;
|
|
45
337
|
console.error(getStringFromWasm0(arg0, arg1));
|
|
46
338
|
} finally {
|
|
47
|
-
wasm.
|
|
339
|
+
wasm.__wbindgen_export(deferred0_0, deferred0_1, 1);
|
|
48
340
|
}
|
|
49
341
|
},
|
|
50
342
|
__wbg_new_227d7c05414eb861: function() {
|
|
51
343
|
const ret = new Error();
|
|
52
|
-
return ret;
|
|
344
|
+
return addHeapObject(ret);
|
|
53
345
|
},
|
|
54
|
-
|
|
346
|
+
__wbg_now_21283541518247e0: function() {
|
|
55
347
|
const ret = performance.now();
|
|
56
348
|
return ret;
|
|
57
349
|
},
|
|
350
|
+
__wbg_now_e7c6795a7f81e10f: function(arg0) {
|
|
351
|
+
const ret = getObject(arg0).now();
|
|
352
|
+
return ret;
|
|
353
|
+
},
|
|
354
|
+
__wbg_performance_3fcf6e32a7e1ed0a: function(arg0) {
|
|
355
|
+
const ret = getObject(arg0).performance;
|
|
356
|
+
return addHeapObject(ret);
|
|
357
|
+
},
|
|
58
358
|
__wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {
|
|
59
|
-
const ret = arg1.stack;
|
|
60
|
-
const ptr1 = passStringToWasm0(ret, wasm.
|
|
359
|
+
const ret = getObject(arg1).stack;
|
|
360
|
+
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export2, wasm.__wbindgen_export3);
|
|
61
361
|
const len1 = WASM_VECTOR_LEN;
|
|
62
362
|
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
|
63
363
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
|
64
364
|
},
|
|
365
|
+
__wbg_static_accessor_GLOBAL_4ef717fb391d88b7: function() {
|
|
366
|
+
const ret = typeof global === 'undefined' ? null : global;
|
|
367
|
+
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
368
|
+
},
|
|
369
|
+
__wbg_static_accessor_GLOBAL_THIS_8d1badc68b5a74f4: function() {
|
|
370
|
+
const ret = typeof globalThis === 'undefined' ? null : globalThis;
|
|
371
|
+
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
372
|
+
},
|
|
373
|
+
__wbg_static_accessor_SELF_146583524fe1469b: function() {
|
|
374
|
+
const ret = typeof self === 'undefined' ? null : self;
|
|
375
|
+
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
376
|
+
},
|
|
377
|
+
__wbg_static_accessor_WINDOW_f2829a2234d7819e: function() {
|
|
378
|
+
const ret = typeof window === 'undefined' ? null : window;
|
|
379
|
+
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
380
|
+
},
|
|
65
381
|
__wbindgen_cast_0000000000000001: function(arg0, arg1) {
|
|
66
382
|
// Cast intrinsic for `Ref(String) -> Externref`.
|
|
67
383
|
const ret = getStringFromWasm0(arg0, arg1);
|
|
68
|
-
return ret;
|
|
384
|
+
return addHeapObject(ret);
|
|
385
|
+
},
|
|
386
|
+
__wbindgen_object_clone_ref: function(arg0) {
|
|
387
|
+
const ret = getObject(arg0);
|
|
388
|
+
return addHeapObject(ret);
|
|
69
389
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const offset = table.grow(4);
|
|
73
|
-
table.set(0, undefined);
|
|
74
|
-
table.set(offset + 0, undefined);
|
|
75
|
-
table.set(offset + 1, null);
|
|
76
|
-
table.set(offset + 2, true);
|
|
77
|
-
table.set(offset + 3, false);
|
|
390
|
+
__wbindgen_object_drop_ref: function(arg0) {
|
|
391
|
+
takeObject(arg0);
|
|
78
392
|
},
|
|
79
393
|
};
|
|
80
394
|
return {
|
|
@@ -83,6 +397,31 @@ function __wbg_get_imports() {
|
|
|
83
397
|
};
|
|
84
398
|
}
|
|
85
399
|
|
|
400
|
+
const UserDataHandleFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
401
|
+
? { register: () => {}, unregister: () => {} }
|
|
402
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_userdatahandle_free(ptr, 1));
|
|
403
|
+
|
|
404
|
+
function addHeapObject(obj) {
|
|
405
|
+
if (heap_next === heap.length) heap.push(heap.length + 1);
|
|
406
|
+
const idx = heap_next;
|
|
407
|
+
heap_next = heap[idx];
|
|
408
|
+
|
|
409
|
+
heap[idx] = obj;
|
|
410
|
+
return idx;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
function _assertClass(instance, klass) {
|
|
414
|
+
if (!(instance instanceof klass)) {
|
|
415
|
+
throw new Error(`expected instance of ${klass.name}`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
function dropObject(idx) {
|
|
420
|
+
if (idx < 1028) return;
|
|
421
|
+
heap[idx] = heap_next;
|
|
422
|
+
heap_next = idx;
|
|
423
|
+
}
|
|
424
|
+
|
|
86
425
|
let cachedDataViewMemory0 = null;
|
|
87
426
|
function getDataViewMemory0() {
|
|
88
427
|
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
|
|
@@ -103,6 +442,17 @@ function getUint8ArrayMemory0() {
|
|
|
103
442
|
return cachedUint8ArrayMemory0;
|
|
104
443
|
}
|
|
105
444
|
|
|
445
|
+
function getObject(idx) { return heap[idx]; }
|
|
446
|
+
|
|
447
|
+
let heap = new Array(1024).fill(undefined);
|
|
448
|
+
heap.push(undefined, null, true, false);
|
|
449
|
+
|
|
450
|
+
let heap_next = heap.length;
|
|
451
|
+
|
|
452
|
+
function isLikeNone(x) {
|
|
453
|
+
return x === undefined || x === null;
|
|
454
|
+
}
|
|
455
|
+
|
|
106
456
|
function passStringToWasm0(arg, malloc, realloc) {
|
|
107
457
|
if (realloc === undefined) {
|
|
108
458
|
const buf = cachedTextEncoder.encode(arg);
|
|
@@ -140,10 +490,10 @@ function passStringToWasm0(arg, malloc, realloc) {
|
|
|
140
490
|
return ptr;
|
|
141
491
|
}
|
|
142
492
|
|
|
143
|
-
function
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
return
|
|
493
|
+
function takeObject(idx) {
|
|
494
|
+
const ret = getObject(idx);
|
|
495
|
+
dropObject(idx);
|
|
496
|
+
return ret;
|
|
147
497
|
}
|
|
148
498
|
|
|
149
499
|
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
package/allium_deck_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empty-sekai/allium-deck-wasm",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"description": "Browser WASM bindings
|
|
5
|
-
"version": "0.0.
|
|
4
|
+
"description": "Browser WASM bindings for allium-deck",
|
|
5
|
+
"version": "0.0.10",
|
|
6
6
|
"license": "MIT OR Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/empty-sekai/allium-deck"
|
|
9
|
+
"url": "git+https://github.com/empty-sekai/allium-deck.git"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"allium_deck_bg.wasm",
|
|
@@ -17,5 +17,8 @@
|
|
|
17
17
|
"types": "allium_deck.d.ts",
|
|
18
18
|
"sideEffects": [
|
|
19
19
|
"./snippets/*"
|
|
20
|
-
]
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
}
|
|
21
24
|
}
|