@kent-tokyo/chematic 1.0.9 → 1.0.11
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/README.md +11 -4
- package/chematic_wasm.d.ts +123 -1
- package/chematic_wasm.js +303 -1
- package/chematic_wasm_bg.wasm +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,9 +21,16 @@ npm install @kent-tokyo/chematic
|
|
|
21
21
|
- SA score: synthetic accessibility estimate [1, 10]
|
|
22
22
|
- Functional group identification (Ertl 2017 IFG)
|
|
23
23
|
- Canonical SMILES generation
|
|
24
|
-
- ECFP4/6, AtomPair, Torsion,
|
|
24
|
+
- ECFP4/6, AtomPair, Torsion, path, and RDKit-compatible RDK fingerprints
|
|
25
|
+
with Tanimoto similarity
|
|
25
26
|
- BRICS fragment count
|
|
26
|
-
- SDF/MOL block parsing
|
|
27
|
+
- SDF/MOL block parsing, including bounded resumable `sdf_records_batch_json`,
|
|
28
|
+
`xyz_frames_batch_json`, and `extxyz_frames_batch_json` manifests with
|
|
29
|
+
deterministic input indices and partial/complete status; bounded malformed
|
|
30
|
+
XYZ frames are grouped inline as rejected records when a later count-line
|
|
31
|
+
boundary is recoverable (core file-backed readers remain fail-stop)
|
|
32
|
+
- Bounded topology parsing for CML, ChemicalJSON (`mol_from_cjson`), MolJSON,
|
|
33
|
+
CDXML, MOL2, and PDB/mmCIF
|
|
27
34
|
- PDBx/mmCIF, PQR, QCSchema JSON, ORCA input/output, Gaussian Cube, OpenDX,
|
|
28
35
|
and LAMMPS data/dump I/O (JSON-based bindings; see `format_io.rs`)
|
|
29
36
|
- Topological descriptors: Wiener index, Hall-Kier κ, χ connectivity indices, Bertz CT
|
|
@@ -68,7 +75,7 @@ console.log(mol.qed()); // drug-likeness score [0, 1]
|
|
|
68
75
|
console.log(mol.exact_mass()); // ~180.042
|
|
69
76
|
console.log(mol.hbd_count()); // 1
|
|
70
77
|
console.log(mol.hba_count()); // 4
|
|
71
|
-
console.log(mol.rotatable_bond_count()); //
|
|
78
|
+
console.log(mol.rotatable_bond_count()); // 2 (RDKit Lipinski definition)
|
|
72
79
|
console.log(mol.aromatic_ring_count()); // 1
|
|
73
80
|
console.log(mol.lipinski_passes()); // true
|
|
74
81
|
console.log(mol.canonical_smiles()); // canonical SMILES string
|
|
@@ -162,7 +169,7 @@ and enforced correctly on all of them.
|
|
|
162
169
|
|
|
163
170
|
## Bundle Size
|
|
164
171
|
|
|
165
|
-
The optimized v1.0.
|
|
172
|
+
The optimized v1.0.10 candidate artifact was measured at **3.73 MB raw / 1.36 MB gzip**. Bundle size depends on features and toolchain; see [`benchmarks/2026-09-09-wasm-size-v1.0.10.md`](../../benchmarks/2026-09-09-wasm-size-v1.0.10.md) for exact tools, digest, and reproduction steps.
|
|
166
173
|
|
|
167
174
|
PNG rasterization (`tiny_skia`) is excluded from the WASM build — use SVG output instead. All SVG depiction APIs remain fully available.
|
|
168
175
|
|
package/chematic_wasm.d.ts
CHANGED
|
@@ -974,6 +974,12 @@ export function estate_indices_json(mol: MolHandle): string;
|
|
|
974
974
|
*/
|
|
975
975
|
export function extxyz_frame_json(text: string): string;
|
|
976
976
|
|
|
977
|
+
/**
|
|
978
|
+
* Return one deterministic, resumable Extended-XYZ batch as a JSON manifest.
|
|
979
|
+
* Stopping before requesting the next offset is the cancellation boundary.
|
|
980
|
+
*/
|
|
981
|
+
export function extxyz_frames_batch_json(text: string, offset: number, batch_size: number): string;
|
|
982
|
+
|
|
977
983
|
/**
|
|
978
984
|
* FCFP4 (pharmacophore, radius-2) fingerprint as a bit-packed byte vector (256 bytes).
|
|
979
985
|
*/
|
|
@@ -1450,7 +1456,7 @@ export function minimize_mmff94_lbfgs_json(mol: MolHandle, max_iter: number): st
|
|
|
1450
1456
|
* `coords_json` — JSON array of `[x,y,z]` arrays (Å), one per atom.
|
|
1451
1457
|
* `max_iter` — maximum iterations (0 = default 500).
|
|
1452
1458
|
*
|
|
1453
|
-
* Returns JSON: `{"coords":[[x,y,z],...], "energy":float, "iterations":int, "converged":bool, "sound":bool}`
|
|
1459
|
+
* Returns JSON: `{"coords":[[x,y,z],...], "energy":float, "iterations":int, "converged":bool, "sound":bool, "worst_bond_length":float}`
|
|
1454
1460
|
* or `{"error":"<msg>"}` on failure. `sound` is all-finite coordinates and
|
|
1455
1461
|
* no bond stretched past a sane covalent-bond length — independent of
|
|
1456
1462
|
* `converged`, since steepest descent often reports `converged:false` on
|
|
@@ -1597,6 +1603,15 @@ export function mol_block_stereo_diagnostics_json(mol_block: string): string;
|
|
|
1597
1603
|
*/
|
|
1598
1604
|
export function mol_from_cdxml(cdxml: string): MolHandle;
|
|
1599
1605
|
|
|
1606
|
+
/**
|
|
1607
|
+
* Parse a ChemicalJSON (CJSON) string into a `MolHandle`.
|
|
1608
|
+
*
|
|
1609
|
+
* Coordinates and CJSON-specific metadata are intentionally not retained by
|
|
1610
|
+
* this topology handle; use `convert_common_format` when a serialized CJSON
|
|
1611
|
+
* round trip is required.
|
|
1612
|
+
*/
|
|
1613
|
+
export function mol_from_cjson(json: string): MolHandle;
|
|
1614
|
+
|
|
1600
1615
|
/**
|
|
1601
1616
|
* Parse a CML string into a `MolHandle`.
|
|
1602
1617
|
*
|
|
@@ -1665,6 +1680,21 @@ export function mol_from_orca_input(text: string): MolHandle;
|
|
|
1665
1680
|
*/
|
|
1666
1681
|
export function mol_from_pdb(pdb: string): MolHandle;
|
|
1667
1682
|
|
|
1683
|
+
/**
|
|
1684
|
+
* Strict PDB parser. Unlike [`mol_from_pdb`], malformed ATOM/HETATM fields
|
|
1685
|
+
* return an error instead of producing a partially recovered molecule.
|
|
1686
|
+
*/
|
|
1687
|
+
export function mol_from_pdb_strict(pdb: string): MolHandle;
|
|
1688
|
+
|
|
1689
|
+
/**
|
|
1690
|
+
* Parse an AutoDock PDBQT block into a topology handle.
|
|
1691
|
+
*
|
|
1692
|
+
* Coordinates and partial charges are intentionally discarded, matching the
|
|
1693
|
+
* Python `from_pdbqt` binding; use the Rust parser when those arrays are
|
|
1694
|
+
* needed. Invalid records return a JS error instead of a partial molecule.
|
|
1695
|
+
*/
|
|
1696
|
+
export function mol_from_pdbqt(pdbqt: string): MolHandle;
|
|
1697
|
+
|
|
1668
1698
|
/**
|
|
1669
1699
|
* Parse a PQR file and return a `MolHandle` (topology only -- element
|
|
1670
1700
|
* list inferred per-atom, no bonds; PQR carries no connectivity). Use
|
|
@@ -1923,6 +1953,12 @@ export function pdb_coords_json(pdb: string): string;
|
|
|
1923
1953
|
*/
|
|
1924
1954
|
export function peoe_vsa_json(mol: MolHandle): string;
|
|
1925
1955
|
|
|
1956
|
+
/**
|
|
1957
|
+
* Fingerprint a serialized `PeriodicStructure`; invalid or oversized input
|
|
1958
|
+
* returns a stable JSON error rather than being treated as a retrieval hit.
|
|
1959
|
+
*/
|
|
1960
|
+
export function periodic_structure_fingerprint_json(json: string, source: string): string;
|
|
1961
|
+
|
|
1926
1962
|
/**
|
|
1927
1963
|
* Detect pharmacophore features for virtual screening and lead optimization.
|
|
1928
1964
|
* Returns JSON array of features: [{type, atom_idx, neighbor_count}, ...]
|
|
@@ -1994,6 +2030,16 @@ export function pqr_to_json(text: string): string;
|
|
|
1994
2030
|
*/
|
|
1995
2031
|
export function predict_pka_json(smiles: string): string;
|
|
1996
2032
|
|
|
2033
|
+
/**
|
|
2034
|
+
* Run deterministic SVG publication preflight for a SMILES string.
|
|
2035
|
+
*
|
|
2036
|
+
* Returns a JSON `PreflightReport` with stable diagnostic paths and a
|
|
2037
|
+
* deterministic input fingerprint. Font metrics are conservative estimates;
|
|
2038
|
+
* the final browser/renderer remains authoritative for pixel-level validation.
|
|
2039
|
+
* The input is capped at the same 1 MiB/10,000-atom limits as other WASM APIs.
|
|
2040
|
+
*/
|
|
2041
|
+
export function preflight_smiles_json(smiles: string, width: number, height: number): string;
|
|
2042
|
+
|
|
1997
2043
|
/**
|
|
1998
2044
|
* Coordinates (Å) plus molecular charge/multiplicity from a QCSchema
|
|
1999
2045
|
* `qcschema_molecule` document, in the SAME atom order
|
|
@@ -2099,6 +2145,38 @@ export function rdkit_ecfp_config_chiral_detail_json(mol: MolHandle, radius: num
|
|
|
2099
2145
|
*/
|
|
2100
2146
|
export function rdkit_ecfp_config_detail_json(mol: MolHandle, radius: number, nbits: number): string;
|
|
2101
2147
|
|
|
2148
|
+
/**
|
|
2149
|
+
* Compute the RDKit-compatible Daylight-like path fingerprint as a bit-packed
|
|
2150
|
+
* byte vector (256 bytes = 2048 bits). This is the WASM counterpart of the
|
|
2151
|
+
* Python `path_fp` operation and is intentionally separate from native
|
|
2152
|
+
* `topo_path_bitvec`.
|
|
2153
|
+
*/
|
|
2154
|
+
export function rdkit_path_bitvec(mol: MolHandle): Uint8Array;
|
|
2155
|
+
|
|
2156
|
+
/**
|
|
2157
|
+
* Compute the RDKit-compatible RDKFingerprint as a bit-packed byte vector
|
|
2158
|
+
* (256 bytes = 2048 bits). This is separate from both the native
|
|
2159
|
+
* `topo_path_bitvec` operation and the RDKit-compatible path operation.
|
|
2160
|
+
*/
|
|
2161
|
+
export function rdkit_rdk_bitvec(mol: MolHandle): Uint8Array;
|
|
2162
|
+
|
|
2163
|
+
/**
|
|
2164
|
+
* Compute the opt-in RDKit-compatible hashed topological-torsion fingerprint
|
|
2165
|
+
* as a bit-packed byte vector (256 bytes = 2048 bits). This remains separate
|
|
2166
|
+
* from the native `torsion_bitvec` operation and its similarity semantics.
|
|
2167
|
+
*/
|
|
2168
|
+
export function rdkit_torsion_bitvec(mol: MolHandle): Uint8Array;
|
|
2169
|
+
|
|
2170
|
+
/**
|
|
2171
|
+
* Check whether a reaction SMILES matches a reaction SMARTS query.
|
|
2172
|
+
*
|
|
2173
|
+
* The middle section of the query supports agent alternatives separated by
|
|
2174
|
+
* `|`. This source-level API remains bounded and returns a typed JS error for
|
|
2175
|
+
* invalid input; the generated Node artifact is updated separately when the
|
|
2176
|
+
* wasm-bindgen toolchain is available.
|
|
2177
|
+
*/
|
|
2178
|
+
export function reaction_smarts_match(smarts: string, reaction_smiles: string): boolean;
|
|
2179
|
+
|
|
2102
2180
|
/**
|
|
2103
2181
|
* Return a copy of the molecule with all explicit hydrogen atoms removed.
|
|
2104
2182
|
*/
|
|
@@ -2222,6 +2300,16 @@ export function screen_smiles_json(smiles_batch: string, delimiter: string): str
|
|
|
2222
2300
|
*/
|
|
2223
2301
|
export function sdf_from_records_json(smiles_json: string, names_json: string, props_json: string): string;
|
|
2224
2302
|
|
|
2303
|
+
/**
|
|
2304
|
+
* Return one deterministic, resumable SDF batch as a JSON manifest.
|
|
2305
|
+
*
|
|
2306
|
+
* `offset` is the zero-based input record to start at and `batch_size` is
|
|
2307
|
+
* bounded by [`crate::WASM_MAX_BATCH_ITEMS`]. Invalid records stay inline as
|
|
2308
|
+
* `status: "rejected"`; callers can stop requesting later batches to cancel
|
|
2309
|
+
* work without a background queue or hidden buffering.
|
|
2310
|
+
*/
|
|
2311
|
+
export function sdf_records_batch_json(sdf: string, offset: number, batch_size: number): string;
|
|
2312
|
+
|
|
2225
2313
|
/**
|
|
2226
2314
|
* Parse an SDF string and return a JSON array of record objects.
|
|
2227
2315
|
*
|
|
@@ -2530,11 +2618,25 @@ export function to_qcschema_molecule_json(mol: MolHandle, coords_json: string, c
|
|
|
2530
2618
|
*/
|
|
2531
2619
|
export function to_xyz(mol: MolHandle): string;
|
|
2532
2620
|
|
|
2621
|
+
/**
|
|
2622
|
+
* Compute the native topological path fingerprint as a bit-packed byte vector
|
|
2623
|
+
* (256 bytes = 2048 bits), using the default [`chematic_fp::TopoPathConfig`].
|
|
2624
|
+
* This is the native `topo_path` operation, not the RDKit-compatible path
|
|
2625
|
+
* fingerprint exposed by the separate `path_fp` Python method.
|
|
2626
|
+
*/
|
|
2627
|
+
export function topo_path_bitvec(mol: MolHandle): Uint8Array;
|
|
2628
|
+
|
|
2533
2629
|
/**
|
|
2534
2630
|
* Torsion fingerprint as a bit-packed byte vector (256 bytes = 2048 bits).
|
|
2535
2631
|
*/
|
|
2536
2632
|
export function torsion_bitvec(mol: MolHandle): Uint8Array;
|
|
2537
2633
|
|
|
2634
|
+
/**
|
|
2635
|
+
* Validate a vendor-neutral NMR spectrum JSON document without parsing a
|
|
2636
|
+
* vendor-specific raw file or predicting peaks.
|
|
2637
|
+
*/
|
|
2638
|
+
export function validate_nmr_spectrum_json(json: string): string;
|
|
2639
|
+
|
|
2538
2640
|
/**
|
|
2539
2641
|
* Virtual screen a query SMILES against a database of SMILES using ECFP4 Tanimoto.
|
|
2540
2642
|
*
|
|
@@ -2652,6 +2754,12 @@ export function xlogp3_json(mol: MolHandle): string;
|
|
|
2652
2754
|
*/
|
|
2653
2755
|
export function xlogp3_per_atom_json(mol: MolHandle): string;
|
|
2654
2756
|
|
|
2757
|
+
/**
|
|
2758
|
+
* Return one deterministic, resumable plain-XYZ batch as a JSON manifest.
|
|
2759
|
+
* Stopping before requesting the next offset is the cancellation boundary.
|
|
2760
|
+
*/
|
|
2761
|
+
export function xyz_frames_batch_json(text: string, offset: number, batch_size: number): string;
|
|
2762
|
+
|
|
2655
2763
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
2656
2764
|
|
|
2657
2765
|
export interface InitOutput {
|
|
@@ -2735,6 +2843,7 @@ export interface InitOutput {
|
|
|
2735
2843
|
readonly erg_vec_json: (a: number) => [number, number];
|
|
2736
2844
|
readonly estate_indices_json: (a: number) => [number, number];
|
|
2737
2845
|
readonly extxyz_frame_json: (a: number, b: number) => [number, number, number, number];
|
|
2846
|
+
readonly extxyz_frames_batch_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
2738
2847
|
readonly fcfp4_bitvec: (a: number) => [number, number];
|
|
2739
2848
|
readonly fcfp6_bitvec: (a: number) => [number, number];
|
|
2740
2849
|
readonly find_reaction_center_json: (a: number, b: number) => [number, number];
|
|
@@ -2801,6 +2910,7 @@ export interface InitOutput {
|
|
|
2801
2910
|
readonly mol_block_from_smiles: (a: number, b: number) => [number, number, number, number];
|
|
2802
2911
|
readonly mol_block_stereo_diagnostics_json: (a: number, b: number) => [number, number, number, number];
|
|
2803
2912
|
readonly mol_from_cdxml: (a: number, b: number) => [number, number, number];
|
|
2913
|
+
readonly mol_from_cjson: (a: number, b: number) => [number, number, number];
|
|
2804
2914
|
readonly mol_from_cml: (a: number, b: number) => [number, number, number];
|
|
2805
2915
|
readonly mol_from_cube: (a: number, b: number) => [number, number, number];
|
|
2806
2916
|
readonly mol_from_extxyz: (a: number, b: number) => [number, number, number];
|
|
@@ -2808,6 +2918,8 @@ export interface InitOutput {
|
|
|
2808
2918
|
readonly mol_from_moljson: (a: number, b: number) => [number, number, number];
|
|
2809
2919
|
readonly mol_from_orca_input: (a: number, b: number) => [number, number, number];
|
|
2810
2920
|
readonly mol_from_pdb: (a: number, b: number) => number;
|
|
2921
|
+
readonly mol_from_pdb_strict: (a: number, b: number) => [number, number, number];
|
|
2922
|
+
readonly mol_from_pdbqt: (a: number, b: number) => [number, number, number];
|
|
2811
2923
|
readonly mol_from_pqr: (a: number, b: number) => [number, number, number];
|
|
2812
2924
|
readonly mol_from_qcschema_molecule: (a: number, b: number) => [number, number, number];
|
|
2813
2925
|
readonly mol_from_sdf_block: (a: number, b: number) => [number, number, number];
|
|
@@ -2914,6 +3026,7 @@ export interface InitOutput {
|
|
|
2914
3026
|
readonly parse_smiles: (a: number, b: number) => [number, number, number];
|
|
2915
3027
|
readonly pdb_coords_json: (a: number, b: number) => [number, number];
|
|
2916
3028
|
readonly peoe_vsa_json: (a: number) => [number, number];
|
|
3029
|
+
readonly periodic_structure_fingerprint_json: (a: number, b: number, c: number, d: number) => [number, number];
|
|
2917
3030
|
readonly pharmacophore_features_json: (a: number) => [number, number];
|
|
2918
3031
|
readonly pharmacophore_fp_2d_summary: (a: number) => [number, number];
|
|
2919
3032
|
readonly pharmacophore_fp_3d_summary: (a: number) => [number, number];
|
|
@@ -2922,6 +3035,7 @@ export interface InitOutput {
|
|
|
2922
3035
|
readonly pqr_infer_element: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
2923
3036
|
readonly pqr_to_json: (a: number, b: number) => [number, number, number, number];
|
|
2924
3037
|
readonly predict_pka_json: (a: number, b: number) => [number, number];
|
|
3038
|
+
readonly preflight_smiles_json: (a: number, b: number, c: number, d: number) => [number, number];
|
|
2925
3039
|
readonly qcschema_molecule_coords_json: (a: number, b: number) => [number, number, number, number];
|
|
2926
3040
|
readonly qcschema_validate_atomic_input: (a: number, b: number) => [number, number, number, number];
|
|
2927
3041
|
readonly qcschema_validate_atomic_result: (a: number, b: number) => [number, number, number, number];
|
|
@@ -2932,6 +3046,10 @@ export interface InitOutput {
|
|
|
2932
3046
|
readonly rdkit_ecfp_config_chiral_bitvec: (a: number, b: number, c: number) => [number, number, number, number];
|
|
2933
3047
|
readonly rdkit_ecfp_config_chiral_detail_json: (a: number, b: number, c: number) => [number, number, number, number];
|
|
2934
3048
|
readonly rdkit_ecfp_config_detail_json: (a: number, b: number, c: number) => [number, number, number, number];
|
|
3049
|
+
readonly rdkit_path_bitvec: (a: number) => [number, number];
|
|
3050
|
+
readonly rdkit_rdk_bitvec: (a: number) => [number, number];
|
|
3051
|
+
readonly rdkit_torsion_bitvec: (a: number) => [number, number];
|
|
3052
|
+
readonly reaction_smarts_match: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
2935
3053
|
readonly remove_hydrogens: (a: number) => number;
|
|
2936
3054
|
readonly retro_disconnect_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
2937
3055
|
readonly rgroup_decompose_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
@@ -2942,6 +3060,7 @@ export interface InitOutput {
|
|
|
2942
3060
|
readonly sa_score: (a: number) => number;
|
|
2943
3061
|
readonly screen_smiles_json: (a: number, b: number, c: number, d: number) => [number, number];
|
|
2944
3062
|
readonly sdf_from_records_json: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
|
|
3063
|
+
readonly sdf_records_batch_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
2945
3064
|
readonly sdf_to_records_json: (a: number, b: number) => [number, number];
|
|
2946
3065
|
readonly sdf_to_smiles_json: (a: number, b: number) => [number, number];
|
|
2947
3066
|
readonly semantic_apply_json_command: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
@@ -2983,7 +3102,9 @@ export interface InitOutput {
|
|
|
2983
3102
|
readonly to_moljson: (a: number) => [number, number];
|
|
2984
3103
|
readonly to_qcschema_molecule_json: (a: number, b: number, c: number, d: number, e: bigint) => [number, number, number, number];
|
|
2985
3104
|
readonly to_xyz: (a: number) => [number, number];
|
|
3105
|
+
readonly topo_path_bitvec: (a: number) => [number, number];
|
|
2986
3106
|
readonly torsion_bitvec: (a: number) => [number, number];
|
|
3107
|
+
readonly validate_nmr_spectrum_json: (a: number, b: number) => [number, number];
|
|
2987
3108
|
readonly virtual_screen_ecfp4_json: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
2988
3109
|
readonly whim_descriptors_json: (a: number) => [number, number];
|
|
2989
3110
|
readonly whim_getaway_combined_json: (a: number) => [number, number];
|
|
@@ -2999,6 +3120,7 @@ export interface InitOutput {
|
|
|
2999
3120
|
readonly write_smiles: (a: number) => [number, number];
|
|
3000
3121
|
readonly xlogp3_json: (a: number) => [number, number];
|
|
3001
3122
|
readonly xlogp3_per_atom_json: (a: number) => [number, number];
|
|
3123
|
+
readonly xyz_frames_batch_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
3002
3124
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
|
3003
3125
|
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
3004
3126
|
readonly __externref_table_alloc: () => number;
|
package/chematic_wasm.js
CHANGED
|
@@ -2377,6 +2377,35 @@ export function extxyz_frame_json(text) {
|
|
|
2377
2377
|
}
|
|
2378
2378
|
}
|
|
2379
2379
|
|
|
2380
|
+
/**
|
|
2381
|
+
* Return one deterministic, resumable Extended-XYZ batch as a JSON manifest.
|
|
2382
|
+
* Stopping before requesting the next offset is the cancellation boundary.
|
|
2383
|
+
* @param {string} text
|
|
2384
|
+
* @param {number} offset
|
|
2385
|
+
* @param {number} batch_size
|
|
2386
|
+
* @returns {string}
|
|
2387
|
+
*/
|
|
2388
|
+
export function extxyz_frames_batch_json(text, offset, batch_size) {
|
|
2389
|
+
let deferred3_0;
|
|
2390
|
+
let deferred3_1;
|
|
2391
|
+
try {
|
|
2392
|
+
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
2393
|
+
const len0 = WASM_VECTOR_LEN;
|
|
2394
|
+
const ret = wasm.extxyz_frames_batch_json(ptr0, len0, offset, batch_size);
|
|
2395
|
+
var ptr2 = ret[0];
|
|
2396
|
+
var len2 = ret[1];
|
|
2397
|
+
if (ret[3]) {
|
|
2398
|
+
ptr2 = 0; len2 = 0;
|
|
2399
|
+
throw takeFromExternrefTable0(ret[2]);
|
|
2400
|
+
}
|
|
2401
|
+
deferred3_0 = ptr2;
|
|
2402
|
+
deferred3_1 = len2;
|
|
2403
|
+
return getStringFromWasm0(ptr2, len2);
|
|
2404
|
+
} finally {
|
|
2405
|
+
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2380
2409
|
/**
|
|
2381
2410
|
* FCFP4 (pharmacophore, radius-2) fingerprint as a bit-packed byte vector (256 bytes).
|
|
2382
2411
|
* @param {MolHandle} mol
|
|
@@ -3551,7 +3580,7 @@ export function minimize_mmff94_lbfgs_json(mol, max_iter) {
|
|
|
3551
3580
|
* `coords_json` — JSON array of `[x,y,z]` arrays (Å), one per atom.
|
|
3552
3581
|
* `max_iter` — maximum iterations (0 = default 500).
|
|
3553
3582
|
*
|
|
3554
|
-
* Returns JSON: `{"coords":[[x,y,z],...], "energy":float, "iterations":int, "converged":bool, "sound":bool}`
|
|
3583
|
+
* Returns JSON: `{"coords":[[x,y,z],...], "energy":float, "iterations":int, "converged":bool, "sound":bool, "worst_bond_length":float}`
|
|
3555
3584
|
* or `{"error":"<msg>"}` on failure. `sound` is all-finite coordinates and
|
|
3556
3585
|
* no bond stretched past a sane covalent-bond length — independent of
|
|
3557
3586
|
* `converged`, since steepest descent often reports `converged:false` on
|
|
@@ -3941,6 +3970,25 @@ export function mol_from_cdxml(cdxml) {
|
|
|
3941
3970
|
return MolHandle.__wrap(ret[0]);
|
|
3942
3971
|
}
|
|
3943
3972
|
|
|
3973
|
+
/**
|
|
3974
|
+
* Parse a ChemicalJSON (CJSON) string into a `MolHandle`.
|
|
3975
|
+
*
|
|
3976
|
+
* Coordinates and CJSON-specific metadata are intentionally not retained by
|
|
3977
|
+
* this topology handle; use `convert_common_format` when a serialized CJSON
|
|
3978
|
+
* round trip is required.
|
|
3979
|
+
* @param {string} json
|
|
3980
|
+
* @returns {MolHandle}
|
|
3981
|
+
*/
|
|
3982
|
+
export function mol_from_cjson(json) {
|
|
3983
|
+
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
3984
|
+
const len0 = WASM_VECTOR_LEN;
|
|
3985
|
+
const ret = wasm.mol_from_cjson(ptr0, len0);
|
|
3986
|
+
if (ret[2]) {
|
|
3987
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
3988
|
+
}
|
|
3989
|
+
return MolHandle.__wrap(ret[0]);
|
|
3990
|
+
}
|
|
3991
|
+
|
|
3944
3992
|
/**
|
|
3945
3993
|
* Parse a CML string into a `MolHandle`.
|
|
3946
3994
|
*
|
|
@@ -4076,6 +4124,41 @@ export function mol_from_pdb(pdb) {
|
|
|
4076
4124
|
return MolHandle.__wrap(ret);
|
|
4077
4125
|
}
|
|
4078
4126
|
|
|
4127
|
+
/**
|
|
4128
|
+
* Strict PDB parser. Unlike [`mol_from_pdb`], malformed ATOM/HETATM fields
|
|
4129
|
+
* return an error instead of producing a partially recovered molecule.
|
|
4130
|
+
* @param {string} pdb
|
|
4131
|
+
* @returns {MolHandle}
|
|
4132
|
+
*/
|
|
4133
|
+
export function mol_from_pdb_strict(pdb) {
|
|
4134
|
+
const ptr0 = passStringToWasm0(pdb, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
4135
|
+
const len0 = WASM_VECTOR_LEN;
|
|
4136
|
+
const ret = wasm.mol_from_pdb_strict(ptr0, len0);
|
|
4137
|
+
if (ret[2]) {
|
|
4138
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
4139
|
+
}
|
|
4140
|
+
return MolHandle.__wrap(ret[0]);
|
|
4141
|
+
}
|
|
4142
|
+
|
|
4143
|
+
/**
|
|
4144
|
+
* Parse an AutoDock PDBQT block into a topology handle.
|
|
4145
|
+
*
|
|
4146
|
+
* Coordinates and partial charges are intentionally discarded, matching the
|
|
4147
|
+
* Python `from_pdbqt` binding; use the Rust parser when those arrays are
|
|
4148
|
+
* needed. Invalid records return a JS error instead of a partial molecule.
|
|
4149
|
+
* @param {string} pdbqt
|
|
4150
|
+
* @returns {MolHandle}
|
|
4151
|
+
*/
|
|
4152
|
+
export function mol_from_pdbqt(pdbqt) {
|
|
4153
|
+
const ptr0 = passStringToWasm0(pdbqt, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
4154
|
+
const len0 = WASM_VECTOR_LEN;
|
|
4155
|
+
const ret = wasm.mol_from_pdbqt(ptr0, len0);
|
|
4156
|
+
if (ret[2]) {
|
|
4157
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
4158
|
+
}
|
|
4159
|
+
return MolHandle.__wrap(ret[0]);
|
|
4160
|
+
}
|
|
4161
|
+
|
|
4079
4162
|
/**
|
|
4080
4163
|
* Parse a PQR file and return a `MolHandle` (topology only -- element
|
|
4081
4164
|
* list inferred per-atom, no bonds; PQR carries no connectivity). Use
|
|
@@ -4800,6 +4883,30 @@ export function peoe_vsa_json(mol) {
|
|
|
4800
4883
|
}
|
|
4801
4884
|
}
|
|
4802
4885
|
|
|
4886
|
+
/**
|
|
4887
|
+
* Fingerprint a serialized `PeriodicStructure`; invalid or oversized input
|
|
4888
|
+
* returns a stable JSON error rather than being treated as a retrieval hit.
|
|
4889
|
+
* @param {string} json
|
|
4890
|
+
* @param {string} source
|
|
4891
|
+
* @returns {string}
|
|
4892
|
+
*/
|
|
4893
|
+
export function periodic_structure_fingerprint_json(json, source) {
|
|
4894
|
+
let deferred3_0;
|
|
4895
|
+
let deferred3_1;
|
|
4896
|
+
try {
|
|
4897
|
+
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
4898
|
+
const len0 = WASM_VECTOR_LEN;
|
|
4899
|
+
const ptr1 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
4900
|
+
const len1 = WASM_VECTOR_LEN;
|
|
4901
|
+
const ret = wasm.periodic_structure_fingerprint_json(ptr0, len0, ptr1, len1);
|
|
4902
|
+
deferred3_0 = ret[0];
|
|
4903
|
+
deferred3_1 = ret[1];
|
|
4904
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
4905
|
+
} finally {
|
|
4906
|
+
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
4907
|
+
}
|
|
4908
|
+
}
|
|
4909
|
+
|
|
4803
4910
|
/**
|
|
4804
4911
|
* Detect pharmacophore features for virtual screening and lead optimization.
|
|
4805
4912
|
* Returns JSON array of features: [{type, atom_idx, neighbor_count}, ...]
|
|
@@ -5006,6 +5113,33 @@ export function predict_pka_json(smiles) {
|
|
|
5006
5113
|
}
|
|
5007
5114
|
}
|
|
5008
5115
|
|
|
5116
|
+
/**
|
|
5117
|
+
* Run deterministic SVG publication preflight for a SMILES string.
|
|
5118
|
+
*
|
|
5119
|
+
* Returns a JSON `PreflightReport` with stable diagnostic paths and a
|
|
5120
|
+
* deterministic input fingerprint. Font metrics are conservative estimates;
|
|
5121
|
+
* the final browser/renderer remains authoritative for pixel-level validation.
|
|
5122
|
+
* The input is capped at the same 1 MiB/10,000-atom limits as other WASM APIs.
|
|
5123
|
+
* @param {string} smiles
|
|
5124
|
+
* @param {number} width
|
|
5125
|
+
* @param {number} height
|
|
5126
|
+
* @returns {string}
|
|
5127
|
+
*/
|
|
5128
|
+
export function preflight_smiles_json(smiles, width, height) {
|
|
5129
|
+
let deferred2_0;
|
|
5130
|
+
let deferred2_1;
|
|
5131
|
+
try {
|
|
5132
|
+
const ptr0 = passStringToWasm0(smiles, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
5133
|
+
const len0 = WASM_VECTOR_LEN;
|
|
5134
|
+
const ret = wasm.preflight_smiles_json(ptr0, len0, width, height);
|
|
5135
|
+
deferred2_0 = ret[0];
|
|
5136
|
+
deferred2_1 = ret[1];
|
|
5137
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
5138
|
+
} finally {
|
|
5139
|
+
wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
|
|
5140
|
+
}
|
|
5141
|
+
}
|
|
5142
|
+
|
|
5009
5143
|
/**
|
|
5010
5144
|
* Coordinates (Å) plus molecular charge/multiplicity from a QCSchema
|
|
5011
5145
|
* `qcschema_molecule` document, in the SAME atom order
|
|
@@ -5298,6 +5432,75 @@ export function rdkit_ecfp_config_detail_json(mol, radius, nbits) {
|
|
|
5298
5432
|
}
|
|
5299
5433
|
}
|
|
5300
5434
|
|
|
5435
|
+
/**
|
|
5436
|
+
* Compute the RDKit-compatible Daylight-like path fingerprint as a bit-packed
|
|
5437
|
+
* byte vector (256 bytes = 2048 bits). This is the WASM counterpart of the
|
|
5438
|
+
* Python `path_fp` operation and is intentionally separate from native
|
|
5439
|
+
* `topo_path_bitvec`.
|
|
5440
|
+
* @param {MolHandle} mol
|
|
5441
|
+
* @returns {Uint8Array}
|
|
5442
|
+
*/
|
|
5443
|
+
export function rdkit_path_bitvec(mol) {
|
|
5444
|
+
_assertClass(mol, MolHandle);
|
|
5445
|
+
const ret = wasm.rdkit_path_bitvec(mol.__wbg_ptr);
|
|
5446
|
+
var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
|
|
5447
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
5448
|
+
return v1;
|
|
5449
|
+
}
|
|
5450
|
+
|
|
5451
|
+
/**
|
|
5452
|
+
* Compute the RDKit-compatible RDKFingerprint as a bit-packed byte vector
|
|
5453
|
+
* (256 bytes = 2048 bits). This is separate from both the native
|
|
5454
|
+
* `topo_path_bitvec` operation and the RDKit-compatible path operation.
|
|
5455
|
+
* @param {MolHandle} mol
|
|
5456
|
+
* @returns {Uint8Array}
|
|
5457
|
+
*/
|
|
5458
|
+
export function rdkit_rdk_bitvec(mol) {
|
|
5459
|
+
_assertClass(mol, MolHandle);
|
|
5460
|
+
const ret = wasm.rdkit_rdk_bitvec(mol.__wbg_ptr);
|
|
5461
|
+
var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
|
|
5462
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
5463
|
+
return v1;
|
|
5464
|
+
}
|
|
5465
|
+
|
|
5466
|
+
/**
|
|
5467
|
+
* Compute the opt-in RDKit-compatible hashed topological-torsion fingerprint
|
|
5468
|
+
* as a bit-packed byte vector (256 bytes = 2048 bits). This remains separate
|
|
5469
|
+
* from the native `torsion_bitvec` operation and its similarity semantics.
|
|
5470
|
+
* @param {MolHandle} mol
|
|
5471
|
+
* @returns {Uint8Array}
|
|
5472
|
+
*/
|
|
5473
|
+
export function rdkit_torsion_bitvec(mol) {
|
|
5474
|
+
_assertClass(mol, MolHandle);
|
|
5475
|
+
const ret = wasm.rdkit_torsion_bitvec(mol.__wbg_ptr);
|
|
5476
|
+
var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
|
|
5477
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
5478
|
+
return v1;
|
|
5479
|
+
}
|
|
5480
|
+
|
|
5481
|
+
/**
|
|
5482
|
+
* Check whether a reaction SMILES matches a reaction SMARTS query.
|
|
5483
|
+
*
|
|
5484
|
+
* The middle section of the query supports agent alternatives separated by
|
|
5485
|
+
* `|`. This source-level API remains bounded and returns a typed JS error for
|
|
5486
|
+
* invalid input; the generated Node artifact is updated separately when the
|
|
5487
|
+
* wasm-bindgen toolchain is available.
|
|
5488
|
+
* @param {string} smarts
|
|
5489
|
+
* @param {string} reaction_smiles
|
|
5490
|
+
* @returns {boolean}
|
|
5491
|
+
*/
|
|
5492
|
+
export function reaction_smarts_match(smarts, reaction_smiles) {
|
|
5493
|
+
const ptr0 = passStringToWasm0(smarts, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
5494
|
+
const len0 = WASM_VECTOR_LEN;
|
|
5495
|
+
const ptr1 = passStringToWasm0(reaction_smiles, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
5496
|
+
const len1 = WASM_VECTOR_LEN;
|
|
5497
|
+
const ret = wasm.reaction_smarts_match(ptr0, len0, ptr1, len1);
|
|
5498
|
+
if (ret[2]) {
|
|
5499
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
5500
|
+
}
|
|
5501
|
+
return ret[0] !== 0;
|
|
5502
|
+
}
|
|
5503
|
+
|
|
5301
5504
|
/**
|
|
5302
5505
|
* Return a copy of the molecule with all explicit hydrogen atoms removed.
|
|
5303
5506
|
* @param {MolHandle} mol
|
|
@@ -5612,6 +5815,39 @@ export function sdf_from_records_json(smiles_json, names_json, props_json) {
|
|
|
5612
5815
|
}
|
|
5613
5816
|
}
|
|
5614
5817
|
|
|
5818
|
+
/**
|
|
5819
|
+
* Return one deterministic, resumable SDF batch as a JSON manifest.
|
|
5820
|
+
*
|
|
5821
|
+
* `offset` is the zero-based input record to start at and `batch_size` is
|
|
5822
|
+
* bounded by [`crate::WASM_MAX_BATCH_ITEMS`]. Invalid records stay inline as
|
|
5823
|
+
* `status: "rejected"`; callers can stop requesting later batches to cancel
|
|
5824
|
+
* work without a background queue or hidden buffering.
|
|
5825
|
+
* @param {string} sdf
|
|
5826
|
+
* @param {number} offset
|
|
5827
|
+
* @param {number} batch_size
|
|
5828
|
+
* @returns {string}
|
|
5829
|
+
*/
|
|
5830
|
+
export function sdf_records_batch_json(sdf, offset, batch_size) {
|
|
5831
|
+
let deferred3_0;
|
|
5832
|
+
let deferred3_1;
|
|
5833
|
+
try {
|
|
5834
|
+
const ptr0 = passStringToWasm0(sdf, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
5835
|
+
const len0 = WASM_VECTOR_LEN;
|
|
5836
|
+
const ret = wasm.sdf_records_batch_json(ptr0, len0, offset, batch_size);
|
|
5837
|
+
var ptr2 = ret[0];
|
|
5838
|
+
var len2 = ret[1];
|
|
5839
|
+
if (ret[3]) {
|
|
5840
|
+
ptr2 = 0; len2 = 0;
|
|
5841
|
+
throw takeFromExternrefTable0(ret[2]);
|
|
5842
|
+
}
|
|
5843
|
+
deferred3_0 = ptr2;
|
|
5844
|
+
deferred3_1 = len2;
|
|
5845
|
+
return getStringFromWasm0(ptr2, len2);
|
|
5846
|
+
} finally {
|
|
5847
|
+
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
5848
|
+
}
|
|
5849
|
+
}
|
|
5850
|
+
|
|
5615
5851
|
/**
|
|
5616
5852
|
* Parse an SDF string and return a JSON array of record objects.
|
|
5617
5853
|
*
|
|
@@ -6568,6 +6804,22 @@ export function to_xyz(mol) {
|
|
|
6568
6804
|
}
|
|
6569
6805
|
}
|
|
6570
6806
|
|
|
6807
|
+
/**
|
|
6808
|
+
* Compute the native topological path fingerprint as a bit-packed byte vector
|
|
6809
|
+
* (256 bytes = 2048 bits), using the default [`chematic_fp::TopoPathConfig`].
|
|
6810
|
+
* This is the native `topo_path` operation, not the RDKit-compatible path
|
|
6811
|
+
* fingerprint exposed by the separate `path_fp` Python method.
|
|
6812
|
+
* @param {MolHandle} mol
|
|
6813
|
+
* @returns {Uint8Array}
|
|
6814
|
+
*/
|
|
6815
|
+
export function topo_path_bitvec(mol) {
|
|
6816
|
+
_assertClass(mol, MolHandle);
|
|
6817
|
+
const ret = wasm.topo_path_bitvec(mol.__wbg_ptr);
|
|
6818
|
+
var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
|
|
6819
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
|
|
6820
|
+
return v1;
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6571
6823
|
/**
|
|
6572
6824
|
* Torsion fingerprint as a bit-packed byte vector (256 bytes = 2048 bits).
|
|
6573
6825
|
* @param {MolHandle} mol
|
|
@@ -6581,6 +6833,27 @@ export function torsion_bitvec(mol) {
|
|
|
6581
6833
|
return v1;
|
|
6582
6834
|
}
|
|
6583
6835
|
|
|
6836
|
+
/**
|
|
6837
|
+
* Validate a vendor-neutral NMR spectrum JSON document without parsing a
|
|
6838
|
+
* vendor-specific raw file or predicting peaks.
|
|
6839
|
+
* @param {string} json
|
|
6840
|
+
* @returns {string}
|
|
6841
|
+
*/
|
|
6842
|
+
export function validate_nmr_spectrum_json(json) {
|
|
6843
|
+
let deferred2_0;
|
|
6844
|
+
let deferred2_1;
|
|
6845
|
+
try {
|
|
6846
|
+
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
6847
|
+
const len0 = WASM_VECTOR_LEN;
|
|
6848
|
+
const ret = wasm.validate_nmr_spectrum_json(ptr0, len0);
|
|
6849
|
+
deferred2_0 = ret[0];
|
|
6850
|
+
deferred2_1 = ret[1];
|
|
6851
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
6852
|
+
} finally {
|
|
6853
|
+
wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
|
|
6854
|
+
}
|
|
6855
|
+
}
|
|
6856
|
+
|
|
6584
6857
|
/**
|
|
6585
6858
|
* Virtual screen a query SMILES against a database of SMILES using ECFP4 Tanimoto.
|
|
6586
6859
|
*
|
|
@@ -6984,6 +7257,35 @@ export function xlogp3_per_atom_json(mol) {
|
|
|
6984
7257
|
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
6985
7258
|
}
|
|
6986
7259
|
}
|
|
7260
|
+
|
|
7261
|
+
/**
|
|
7262
|
+
* Return one deterministic, resumable plain-XYZ batch as a JSON manifest.
|
|
7263
|
+
* Stopping before requesting the next offset is the cancellation boundary.
|
|
7264
|
+
* @param {string} text
|
|
7265
|
+
* @param {number} offset
|
|
7266
|
+
* @param {number} batch_size
|
|
7267
|
+
* @returns {string}
|
|
7268
|
+
*/
|
|
7269
|
+
export function xyz_frames_batch_json(text, offset, batch_size) {
|
|
7270
|
+
let deferred3_0;
|
|
7271
|
+
let deferred3_1;
|
|
7272
|
+
try {
|
|
7273
|
+
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
7274
|
+
const len0 = WASM_VECTOR_LEN;
|
|
7275
|
+
const ret = wasm.xyz_frames_batch_json(ptr0, len0, offset, batch_size);
|
|
7276
|
+
var ptr2 = ret[0];
|
|
7277
|
+
var len2 = ret[1];
|
|
7278
|
+
if (ret[3]) {
|
|
7279
|
+
ptr2 = 0; len2 = 0;
|
|
7280
|
+
throw takeFromExternrefTable0(ret[2]);
|
|
7281
|
+
}
|
|
7282
|
+
deferred3_0 = ptr2;
|
|
7283
|
+
deferred3_1 = len2;
|
|
7284
|
+
return getStringFromWasm0(ptr2, len2);
|
|
7285
|
+
} finally {
|
|
7286
|
+
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
7287
|
+
}
|
|
7288
|
+
}
|
|
6987
7289
|
function __wbg_get_imports() {
|
|
6988
7290
|
const import0 = {
|
|
6989
7291
|
__proto__: null,
|
package/chematic_wasm_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"Kentaro Tanabe (kent-tokyo) <kent-tokyo@users.noreply.github.com>"
|
|
6
6
|
],
|
|
7
7
|
"description": "WebAssembly bindings for chematic — use chematic from JavaScript/TypeScript",
|
|
8
|
-
"version": "1.0.
|
|
8
|
+
"version": "1.0.11",
|
|
9
9
|
"license": "MIT OR Apache-2.0",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|