@xyo-network/wasm 7.0.0 → 7.0.3
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.
|
@@ -36,12 +36,12 @@ export declare const WasmFeatureDetectors: {
|
|
|
36
36
|
};
|
|
37
37
|
export type WasmFeature = keyof typeof WasmFeatureDetectors;
|
|
38
38
|
export declare class WasmSupport {
|
|
39
|
-
protected desiredFeatures: WasmFeature[];
|
|
40
39
|
private _allowWasm;
|
|
41
40
|
private _featureSupport;
|
|
42
41
|
private _forceWasm;
|
|
43
42
|
private _isInitialized;
|
|
44
43
|
private _isWasmFeatureSetSupported;
|
|
44
|
+
protected desiredFeatures: WasmFeature[];
|
|
45
45
|
/**
|
|
46
46
|
* Instance constructor for use where async instantiation
|
|
47
47
|
* is not possible. Where possible, prefer the static
|
|
@@ -52,51 +52,52 @@ export declare class WasmSupport {
|
|
|
52
52
|
*/
|
|
53
53
|
constructor(desiredFeatures: WasmFeature[]);
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* Static creation & async initialization for use where
|
|
56
|
+
* async instantiation is possible
|
|
57
|
+
* @param desiredFeatures The desired feature set
|
|
58
|
+
* @returns An initialized instance of the class with detection
|
|
59
|
+
* for the desired feature set
|
|
60
|
+
*/
|
|
61
|
+
static create(desiredFeatures: WasmFeature[]): Promise<WasmSupport>;
|
|
62
|
+
/**
|
|
63
|
+
* Is WebAssembly allowed
|
|
56
64
|
*/
|
|
57
65
|
get allowWasm(): boolean;
|
|
58
66
|
/**
|
|
59
|
-
* Whether or not to allow
|
|
67
|
+
* Whether or not to allow WebAssembly usage
|
|
60
68
|
*/
|
|
61
69
|
set allowWasm(v: boolean);
|
|
62
70
|
/**
|
|
63
|
-
* Whether or not
|
|
71
|
+
* Whether or not WebAssembly should be used based on the desired
|
|
64
72
|
* feature set, initialization state, or force-use settings
|
|
65
73
|
*/
|
|
66
74
|
get canUseWasm(): boolean;
|
|
67
75
|
/**
|
|
68
|
-
* Returns a object containing a property for each desired
|
|
76
|
+
* Returns a object containing a property for each desired WebAssembly feature
|
|
69
77
|
* with a boolean value indicating whether or not the feature is supported
|
|
70
78
|
*/
|
|
71
79
|
get featureSupport(): Readonly<Partial<Record<WasmFeature, boolean>>>;
|
|
72
80
|
/**
|
|
73
|
-
* Force use of
|
|
81
|
+
* Force use of WebAssembly
|
|
74
82
|
*/
|
|
75
83
|
get forceWasm(): boolean;
|
|
76
84
|
/**
|
|
77
|
-
* Whether or not to force
|
|
85
|
+
* Whether or not to force WebAssembly usage
|
|
78
86
|
*/
|
|
79
87
|
set forceWasm(v: boolean);
|
|
80
88
|
/**
|
|
81
|
-
* Whether or not
|
|
89
|
+
* Whether or not WebAssembly is supported based
|
|
82
90
|
* on the desired feature set
|
|
83
91
|
*/
|
|
84
92
|
get isDesiredFeatureSetSupported(): boolean;
|
|
85
93
|
/**
|
|
86
|
-
* Whether or not
|
|
94
|
+
* Whether or not WebAssembly detection has been run
|
|
87
95
|
* for the desired feature set
|
|
88
96
|
*/
|
|
89
97
|
get isInitialized(): boolean;
|
|
98
|
+
protected detectDesiredFeatures(): Promise<void>;
|
|
90
99
|
/**
|
|
91
|
-
*
|
|
92
|
-
* async instantiation is possible
|
|
93
|
-
* @param desiredFeatures The desired feature set
|
|
94
|
-
* @returns An initialized instance of the class with detection
|
|
95
|
-
* for the desired feature set
|
|
96
|
-
*/
|
|
97
|
-
static create(desiredFeatures: WasmFeature[]): Promise<WasmSupport>;
|
|
98
|
-
/**
|
|
99
|
-
* Checks for specific wasm features
|
|
100
|
+
* Checks for specific WebAssembly features
|
|
100
101
|
* @param features The list of features to check for
|
|
101
102
|
* @returns True if all the features are supported, false otherwise
|
|
102
103
|
*/
|
|
@@ -105,6 +106,5 @@ export declare class WasmSupport {
|
|
|
105
106
|
* Does feature detection for the desired feature set
|
|
106
107
|
*/
|
|
107
108
|
initialize(): Promise<void>;
|
|
108
|
-
protected detectDesiredFeatures(): Promise<void>;
|
|
109
109
|
}
|
|
110
110
|
//# sourceMappingURL=WasmSupport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WasmSupport.d.ts","sourceRoot":"","sources":["../../src/WasmSupport.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB;;;;;;;;;;iGAoCiB,CAAC;;
|
|
1
|
+
{"version":3,"file":"WasmSupport.d.ts","sourceRoot":"","sources":["../../src/WasmSupport.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB;;;;;;;;;;iGAoCiB,CAAC;;qEAY9B,CAAE;;;;;;;;4EAXlB,CAAE;;;;;iDAQJ,GAAC;;;;;;;;;;CA5BM,CAAA;AAIV,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,oBAAoB,CAAA;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,0BAA0B,CAAQ;IAE1C,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,CAAA;IAExC;;;;;;;OAOG;gBACS,eAAe,EAAE,WAAW,EAAE;IAI1C;;;;;;OAMG;WACU,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAMzE;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAEvB;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CASxB;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAEpE;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAEvB;IAED;;;OAGG;IACH,IAAI,4BAA4B,IAAI,OAAO,CAE1C;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;cAEe,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtD;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAKlC"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -27,7 +27,8 @@ var threads = async () => {
|
|
|
27
27
|
try {
|
|
28
28
|
const sharedAvailable = typeof MessageChannel !== "undefined" && (() => {
|
|
29
29
|
try {
|
|
30
|
-
new MessageChannel()
|
|
30
|
+
const channel = new MessageChannel();
|
|
31
|
+
channel.port1.postMessage(new SharedArrayBuffer(1));
|
|
31
32
|
return true;
|
|
32
33
|
} catch {
|
|
33
34
|
return false;
|
|
@@ -61,12 +62,12 @@ var WasmFeatureDetectors = {
|
|
|
61
62
|
threads
|
|
62
63
|
};
|
|
63
64
|
var WasmSupport = class _WasmSupport {
|
|
64
|
-
desiredFeatures;
|
|
65
65
|
_allowWasm = true;
|
|
66
66
|
_featureSupport = {};
|
|
67
67
|
_forceWasm = false;
|
|
68
68
|
_isInitialized = false;
|
|
69
69
|
_isWasmFeatureSetSupported = false;
|
|
70
|
+
desiredFeatures;
|
|
70
71
|
/**
|
|
71
72
|
* Instance constructor for use where async instantiation
|
|
72
73
|
* is not possible. Where possible, prefer the static
|
|
@@ -79,74 +80,81 @@ var WasmSupport = class _WasmSupport {
|
|
|
79
80
|
this.desiredFeatures = desiredFeatures;
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
|
-
*
|
|
83
|
+
* Static creation & async initialization for use where
|
|
84
|
+
* async instantiation is possible
|
|
85
|
+
* @param desiredFeatures The desired feature set
|
|
86
|
+
* @returns An initialized instance of the class with detection
|
|
87
|
+
* for the desired feature set
|
|
88
|
+
*/
|
|
89
|
+
static async create(desiredFeatures) {
|
|
90
|
+
const instance = new _WasmSupport(desiredFeatures);
|
|
91
|
+
await instance.initialize();
|
|
92
|
+
return instance;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Is WebAssembly allowed
|
|
83
96
|
*/
|
|
84
97
|
get allowWasm() {
|
|
85
98
|
return this._allowWasm;
|
|
86
99
|
}
|
|
87
100
|
/**
|
|
88
|
-
* Whether or not to allow
|
|
101
|
+
* Whether or not to allow WebAssembly usage
|
|
89
102
|
*/
|
|
90
103
|
set allowWasm(v) {
|
|
91
104
|
this._allowWasm = v;
|
|
92
105
|
}
|
|
93
106
|
/**
|
|
94
|
-
* Whether or not
|
|
107
|
+
* Whether or not WebAssembly should be used based on the desired
|
|
95
108
|
* feature set, initialization state, or force-use settings
|
|
96
109
|
*/
|
|
97
110
|
get canUseWasm() {
|
|
98
111
|
return (
|
|
99
|
-
// Just force
|
|
112
|
+
// Just force WebAssembly
|
|
100
113
|
this._forceWasm || this._allowWasm && !this._isInitialized || this._allowWasm && this._isInitialized && this._isWasmFeatureSetSupported
|
|
101
114
|
);
|
|
102
115
|
}
|
|
103
116
|
/**
|
|
104
|
-
* Returns a object containing a property for each desired
|
|
117
|
+
* Returns a object containing a property for each desired WebAssembly feature
|
|
105
118
|
* with a boolean value indicating whether or not the feature is supported
|
|
106
119
|
*/
|
|
107
120
|
get featureSupport() {
|
|
108
121
|
return { ...this._featureSupport };
|
|
109
122
|
}
|
|
110
123
|
/**
|
|
111
|
-
* Force use of
|
|
124
|
+
* Force use of WebAssembly
|
|
112
125
|
*/
|
|
113
126
|
get forceWasm() {
|
|
114
127
|
return this._forceWasm;
|
|
115
128
|
}
|
|
116
129
|
/**
|
|
117
|
-
* Whether or not to force
|
|
130
|
+
* Whether or not to force WebAssembly usage
|
|
118
131
|
*/
|
|
119
132
|
set forceWasm(v) {
|
|
120
133
|
this._forceWasm = v;
|
|
121
134
|
}
|
|
122
135
|
/**
|
|
123
|
-
* Whether or not
|
|
136
|
+
* Whether or not WebAssembly is supported based
|
|
124
137
|
* on the desired feature set
|
|
125
138
|
*/
|
|
126
139
|
get isDesiredFeatureSetSupported() {
|
|
127
140
|
return this._isWasmFeatureSetSupported;
|
|
128
141
|
}
|
|
129
142
|
/**
|
|
130
|
-
* Whether or not
|
|
143
|
+
* Whether or not WebAssembly detection has been run
|
|
131
144
|
* for the desired feature set
|
|
132
145
|
*/
|
|
133
146
|
get isInitialized() {
|
|
134
147
|
return this._isInitialized;
|
|
135
148
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
*/
|
|
143
|
-
static async create(desiredFeatures) {
|
|
144
|
-
const instance = new _WasmSupport(desiredFeatures);
|
|
145
|
-
await instance.initialize();
|
|
146
|
-
return instance;
|
|
149
|
+
async detectDesiredFeatures() {
|
|
150
|
+
for (const desiredFeature of this.desiredFeatures) {
|
|
151
|
+
const detector = WasmFeatureDetectors[desiredFeature];
|
|
152
|
+
this._featureSupport[desiredFeature] = isTruthy(await detector());
|
|
153
|
+
}
|
|
154
|
+
this._isWasmFeatureSetSupported = Object.values(this._featureSupport).every(Boolean);
|
|
147
155
|
}
|
|
148
156
|
/**
|
|
149
|
-
* Checks for specific
|
|
157
|
+
* Checks for specific WebAssembly features
|
|
150
158
|
* @param features The list of features to check for
|
|
151
159
|
* @returns True if all the features are supported, false otherwise
|
|
152
160
|
*/
|
|
@@ -162,13 +170,6 @@ var WasmSupport = class _WasmSupport {
|
|
|
162
170
|
await this.detectDesiredFeatures();
|
|
163
171
|
this._isInitialized = true;
|
|
164
172
|
}
|
|
165
|
-
async detectDesiredFeatures() {
|
|
166
|
-
for (const desiredFeature of this.desiredFeatures) {
|
|
167
|
-
const detector = WasmFeatureDetectors[desiredFeature];
|
|
168
|
-
this._featureSupport[desiredFeature] = isTruthy(await detector());
|
|
169
|
-
}
|
|
170
|
-
this._isWasmFeatureSetSupported = Object.values(this._featureSupport).every(Boolean);
|
|
171
|
-
}
|
|
172
173
|
};
|
|
173
174
|
export {
|
|
174
175
|
WasmFeatureDetectors,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/wasmFeatureDetect.ts", "../../src/WasmSupport.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Vendored from wasm-feature-detect (MIT, https://github.com/GoogleChromeLabs/wasm-feature-detect)\n * Each detector validates a small precompiled
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/*\n * Vendored from wasm-feature-detect (MIT, https://github.com/GoogleChromeLabs/wasm-feature-detect)\n * Each detector validates a small precompiled WebAssembly module that exercises one feature.\n */\n\nconst validate = (bytes: number[]): Promise<boolean> => Promise.resolve(WebAssembly.validate(new Uint8Array(bytes)))\n\nexport const bigInt = async (): Promise<boolean> => {\n try {\n const mod = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 1, 126, 1, 126, 3, 2, 1, 0, 7, 5, 1, 1, 98, 0, 0, 10, 6, 1, 4, 0, 32, 0, 11])\n const { instance } = await WebAssembly.instantiate(mod)\n const fn = instance.exports.b as (x: bigint) => bigint\n return fn(0n) === 0n\n } catch {\n return false\n }\n}\n\nexport const bulkMemory = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5, 3, 1, 0, 1, 10, 14, 1, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11])\n\nexport const exceptions = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 8, 1, 6, 0, 6, 64, 25, 11, 11])\n\nexport const extendedConst = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 5, 3, 1, 0, 1, 11, 9, 1, 0, 65, 1, 65, 2, 106, 11, 0])\n\nexport const gc = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 95, 1, 120, 0])\n\nexport const memory64 = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 5, 3, 1, 4, 1])\n\nexport const multiValue = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 0, 2, 127, 127, 3, 2, 1, 0, 10, 8, 1, 6, 0, 65, 0, 65, 0, 11])\n\nexport const mutableGlobals = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 2, 8, 1, 1, 97, 1, 98, 3, 127, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 5, 1, 1, 97, 3, 1])\n\nexport const relaxedSimd = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 15, 1, 13, 0, 65, 1, 253, 15, 65, 2, 253, 15, 253, 128, 2, 11])\n\nexport const saturatedFloatToInt = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 12, 1, 10, 0, 67, 0, 0, 0, 0, 252, 0, 26, 11])\n\nexport const signExtensions = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 8, 1, 6, 0, 65, 0, 192, 26, 11])\n\nexport const simd = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11])\n\nexport const streamingCompilation = (): Promise<boolean> => Promise.resolve('compileStreaming' in WebAssembly)\n\nexport const tailCall = (): Promise<boolean> => validate([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 6, 1, 4, 0, 18, 0, 11])\n\nexport const threads = async (): Promise<boolean> => {\n try {\n const sharedAvailable = typeof MessageChannel !== 'undefined'\n && (() => {\n try {\n const channel = new MessageChannel()\n channel.port1.postMessage(new SharedArrayBuffer(1))\n return true\n } catch {\n return false\n }\n })()\n if (!sharedAvailable) return false\n return WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5, 4, 1, 3, 1, 1, 10, 11, 1, 9, 0, 65, 0, 254, 16, 2, 0, 26, 11]))\n } catch {\n return false\n }\n}\n", "import {\n bigInt,\n bulkMemory,\n exceptions,\n extendedConst,\n gc,\n memory64,\n multiValue,\n mutableGlobals,\n relaxedSimd,\n saturatedFloatToInt,\n signExtensions,\n simd,\n streamingCompilation,\n tailCall,\n threads,\n} from './wasmFeatureDetect.ts'\n\nexport const WasmFeatureDetectors = {\n bigInt: bigInt,\n bulkMemory: bulkMemory,\n exceptions: exceptions,\n extendedConst: extendedConst,\n gc: gc,\n memory64: memory64,\n multiValue: multiValue,\n mutableGlobals: mutableGlobals,\n referenceTypes: () => Promise<boolean>,\n relaxedSimd: relaxedSimd,\n saturatedFloatToInt: saturatedFloatToInt,\n signExtensions: signExtensions,\n simd: simd,\n streamingCompilation: streamingCompilation,\n tailCall: tailCall,\n threads: threads,\n} as const\n\nimport { isTruthy } from '@xylabs/sdk-js'\n\nexport type WasmFeature = keyof typeof WasmFeatureDetectors\n\nexport class WasmSupport {\n private _allowWasm = true\n private _featureSupport: Partial<Record<WasmFeature, boolean>> = {}\n private _forceWasm = false\n private _isInitialized = false\n private _isWasmFeatureSetSupported = false\n\n protected desiredFeatures: WasmFeature[]\n\n /**\n * Instance constructor for use where async instantiation\n * is not possible. Where possible, prefer the static\n * create method over use of this constructor directly\n * as no initialization (feature detection) is able to\n * be done here\n * @param desiredFeatures The desired feature set\n */\n constructor(desiredFeatures: WasmFeature[]) {\n this.desiredFeatures = desiredFeatures\n }\n\n /**\n * Static creation & async initialization for use where\n * async instantiation is possible\n * @param desiredFeatures The desired feature set\n * @returns An initialized instance of the class with detection\n * for the desired feature set\n */\n static async create(desiredFeatures: WasmFeature[]): Promise<WasmSupport> {\n const instance = new WasmSupport(desiredFeatures)\n await instance.initialize()\n return instance\n }\n\n /**\n * Is WebAssembly allowed\n */\n get allowWasm(): boolean {\n return this._allowWasm\n }\n\n /**\n * Whether or not to allow WebAssembly usage\n */\n set allowWasm(v: boolean) {\n this._allowWasm = v\n }\n\n /**\n * Whether or not WebAssembly should be used based on the desired\n * feature set, initialization state, or force-use settings\n */\n get canUseWasm(): boolean {\n return (\n // Just force WebAssembly\n this._forceWasm\n // Or if we haven't checked be optimistic\n || (this._allowWasm && !this._isInitialized)\n // Or if we have checked and WebAssembly is not supported, be realistic\n || (this._allowWasm && this._isInitialized && this._isWasmFeatureSetSupported)\n )\n }\n\n /**\n * Returns a object containing a property for each desired WebAssembly feature\n * with a boolean value indicating whether or not the feature is supported\n */\n get featureSupport(): Readonly<Partial<Record<WasmFeature, boolean>>> {\n return { ...this._featureSupport }\n }\n\n /**\n * Force use of WebAssembly\n */\n get forceWasm(): boolean {\n return this._forceWasm\n }\n\n /**\n * Whether or not to force WebAssembly usage\n */\n set forceWasm(v: boolean) {\n this._forceWasm = v\n }\n\n /**\n * Whether or not WebAssembly is supported based\n * on the desired feature set\n */\n get isDesiredFeatureSetSupported(): boolean {\n return this._isWasmFeatureSetSupported\n }\n\n /**\n * Whether or not WebAssembly detection has been run\n * for the desired feature set\n */\n get isInitialized(): boolean {\n return this._isInitialized\n }\n\n protected async detectDesiredFeatures(): Promise<void> {\n for (const desiredFeature of this.desiredFeatures) {\n const detector = WasmFeatureDetectors[desiredFeature]\n this._featureSupport[desiredFeature] = isTruthy(await detector())\n }\n this._isWasmFeatureSetSupported = Object.values(this._featureSupport).every(Boolean)\n }\n\n /**\n * Checks for specific WebAssembly features\n * @param features The list of features to check for\n * @returns True if all the features are supported, false otherwise\n */\n async featureCheck(features: WasmFeature[]): Promise<boolean> {\n const results = await Promise.all(features.map(feature => WasmFeatureDetectors[feature]).map(async detector => await detector()))\n return results.every(Boolean)\n }\n\n /**\n * Does feature detection for the desired feature set\n */\n async initialize(): Promise<void> {\n if (this._isInitialized) return\n await this.detectDesiredFeatures()\n this._isInitialized = true\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmFeatureDetect.d.ts","sourceRoot":"","sources":["../../src/wasmFeatureDetect.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,MAAM,QAAa,OAAO,CAAC,OAAO,CAS9C,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAAoJ,CAAA;AAEjM,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAA8G,CAAA;AAE3J,eAAO,MAAM,aAAa,QAAO,OAAO,CAAC,OAAO,CAAkG,CAAA;AAElJ,eAAO,MAAM,EAAE,QAAO,OAAO,CAAC,OAAO,CAAoE,CAAA;AAEzG,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,OAAO,CAA2D,CAAA;AAEtG,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAAuH,CAAA;AAEpK,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,OAAO,CAAgI,CAAA;AAEjL,eAAO,MAAM,WAAW,QAAO,OAAO,CAAC,OAAO,CAAmJ,CAAA;AAEjM,eAAO,MAAM,mBAAmB,QAAO,OAAO,CAAC,OAAO,CAA6H,CAAA;AAEnL,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,OAAO,CAA+G,CAAA;AAEhK,eAAO,MAAM,IAAI,QAAO,OAAO,CAAC,OAAO,CAA8H,CAAA;AAErK,eAAO,MAAM,oBAAoB,QAAO,OAAO,CAAC,OAAO,CAAuD,CAAA;AAE9G,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,OAAO,CAAsG,CAAA;AAEjJ,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"wasmFeatureDetect.d.ts","sourceRoot":"","sources":["../../src/wasmFeatureDetect.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,MAAM,QAAa,OAAO,CAAC,OAAO,CAS9C,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAAoJ,CAAA;AAEjM,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAA8G,CAAA;AAE3J,eAAO,MAAM,aAAa,QAAO,OAAO,CAAC,OAAO,CAAkG,CAAA;AAElJ,eAAO,MAAM,EAAE,QAAO,OAAO,CAAC,OAAO,CAAoE,CAAA;AAEzG,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,OAAO,CAA2D,CAAA;AAEtG,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,OAAO,CAAuH,CAAA;AAEpK,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,OAAO,CAAgI,CAAA;AAEjL,eAAO,MAAM,WAAW,QAAO,OAAO,CAAC,OAAO,CAAmJ,CAAA;AAEjM,eAAO,MAAM,mBAAmB,QAAO,OAAO,CAAC,OAAO,CAA6H,CAAA;AAEnL,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,OAAO,CAA+G,CAAA;AAEhK,eAAO,MAAM,IAAI,QAAO,OAAO,CAAC,OAAO,CAA8H,CAAA;AAErK,eAAO,MAAM,oBAAoB,QAAO,OAAO,CAAC,OAAO,CAAuD,CAAA;AAE9G,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,OAAO,CAAsG,CAAA;AAEjJ,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,OAAO,CAiB/C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/wasm",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.3",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@opentelemetry/api": "^1.9.1",
|
|
38
38
|
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
39
|
-
"@xylabs/sdk-js": "^6.1.
|
|
40
|
-
"@xylabs/tsconfig": "~8.
|
|
41
|
-
"@xylabs/vitest-extended": "^6.1.
|
|
39
|
+
"@xylabs/sdk-js": "^6.1.4",
|
|
40
|
+
"@xylabs/tsconfig": "~8.3.0",
|
|
41
|
+
"@xylabs/vitest-extended": "^6.1.4",
|
|
42
42
|
"async-mutex": "^0.5.0",
|
|
43
43
|
"typescript": "~6.0.3",
|
|
44
|
-
"vite": "^8.0
|
|
45
|
-
"vitest": "~4.1.
|
|
44
|
+
"vite": "^8.1.0",
|
|
45
|
+
"vitest": "~4.1.9",
|
|
46
46
|
"zod": "^4.4.3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|