@benrogmans/lemma-engine 0.6.4 → 0.6.6

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lemma is a declarative programming language for expressing business rules. This WebAssembly build for JavaScript and TypeScript provides an embeddable runtime, so that Lemma code can be evaluated anywhere.
4
4
 
5
- **New to Lemma?** Check out the [language introduction](https://github.com/benrogmans/lemma#quick-start) and [examples](https://github.com/benrogmans/lemma/tree/main/docs/examples).
5
+ **New to Lemma?** Check out the [language introduction](https://github.com/benrogmans/lemma#quick-start) and [examples](https://github.com/benrogmans/lemma/tree/main/documentation/examples).
6
6
 
7
7
  ## Installation
8
8
 
@@ -156,7 +156,7 @@ async function calculatePricing() {
156
156
  unless promo_discount? >= bulk_discount? then promo_discount?
157
157
  unless member_discount? >= promo_discount? then member_discount?
158
158
  unless promo_discount? >= member_discount? then promo_discount?
159
-
159
+
160
160
  rule final_price = base_price * quantity * (1 - best_discount?)
161
161
  `;
162
162
 
@@ -296,6 +296,6 @@ Apache-2.0
296
296
  ## Links
297
297
 
298
298
  - [GitHub Repository](https://github.com/benrogmans/lemma)
299
- - [Lemma Language Guide](https://github.com/benrogmans/lemma/tree/main/docs)
300
- - [Examples](https://github.com/benrogmans/lemma/tree/main/docs/examples)
299
+ - [Lemma Language Guide](https://github.com/benrogmans/lemma/tree/main/documentation)
300
+ - [Examples](https://github.com/benrogmans/lemma/tree/main/documentation/examples)
301
301
  - [Report Issues](https://github.com/benrogmans/lemma/issues)
package/lemma.d.ts CHANGED
@@ -3,10 +3,11 @@
3
3
  export class WasmEngine {
4
4
  free(): void;
5
5
  [Symbol.dispose](): void;
6
- constructor();
7
6
  addLemmaCode(code: string, source: string): string;
8
- evaluate(doc_name: string, fact_values_json: string): string;
9
7
  listDocuments(): string;
8
+ constructor();
9
+ invert(doc_name: string, rule_name: string, target_json: string, given_facts_json: string): string;
10
+ evaluate(doc_name: string, fact_values_json: string): string;
10
11
  }
11
12
 
12
13
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
@@ -14,10 +15,11 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
14
15
  export interface InitOutput {
15
16
  readonly memory: WebAssembly.Memory;
16
17
  readonly __wbg_wasmengine_free: (a: number, b: number) => void;
17
- readonly wasmengine_new: () => number;
18
18
  readonly wasmengine_addLemmaCode: (a: number, b: number, c: number, d: number, e: number) => [number, number];
19
19
  readonly wasmengine_evaluate: (a: number, b: number, c: number, d: number, e: number) => [number, number];
20
+ readonly wasmengine_invert: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
20
21
  readonly wasmengine_listDocuments: (a: number) => [number, number];
22
+ readonly wasmengine_new: () => number;
21
23
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
22
24
  readonly __wbindgen_malloc: (a: number, b: number) => number;
23
25
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
package/lemma.js CHANGED
@@ -110,12 +110,6 @@ export class WasmEngine {
110
110
  const ptr = this.__destroy_into_raw();
111
111
  wasm.__wbg_wasmengine_free(ptr, 0);
112
112
  }
113
- constructor() {
114
- const ret = wasm.wasmengine_new();
115
- this.__wbg_ptr = ret >>> 0;
116
- WasmEngineFinalization.register(this, this.__wbg_ptr, this);
117
- return this;
118
- }
119
113
  /**
120
114
  * @param {string} code
121
115
  * @param {string} source
@@ -137,6 +131,54 @@ export class WasmEngine {
137
131
  wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
138
132
  }
139
133
  }
134
+ /**
135
+ * @returns {string}
136
+ */
137
+ listDocuments() {
138
+ let deferred1_0;
139
+ let deferred1_1;
140
+ try {
141
+ const ret = wasm.wasmengine_listDocuments(this.__wbg_ptr);
142
+ deferred1_0 = ret[0];
143
+ deferred1_1 = ret[1];
144
+ return getStringFromWasm0(ret[0], ret[1]);
145
+ } finally {
146
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
147
+ }
148
+ }
149
+ constructor() {
150
+ const ret = wasm.wasmengine_new();
151
+ this.__wbg_ptr = ret >>> 0;
152
+ WasmEngineFinalization.register(this, this.__wbg_ptr, this);
153
+ return this;
154
+ }
155
+ /**
156
+ * @param {string} doc_name
157
+ * @param {string} rule_name
158
+ * @param {string} target_json
159
+ * @param {string} given_facts_json
160
+ * @returns {string}
161
+ */
162
+ invert(doc_name, rule_name, target_json, given_facts_json) {
163
+ let deferred5_0;
164
+ let deferred5_1;
165
+ try {
166
+ const ptr0 = passStringToWasm0(doc_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
167
+ const len0 = WASM_VECTOR_LEN;
168
+ const ptr1 = passStringToWasm0(rule_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
169
+ const len1 = WASM_VECTOR_LEN;
170
+ const ptr2 = passStringToWasm0(target_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
171
+ const len2 = WASM_VECTOR_LEN;
172
+ const ptr3 = passStringToWasm0(given_facts_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
173
+ const len3 = WASM_VECTOR_LEN;
174
+ const ret = wasm.wasmengine_invert(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
175
+ deferred5_0 = ret[0];
176
+ deferred5_1 = ret[1];
177
+ return getStringFromWasm0(ret[0], ret[1]);
178
+ } finally {
179
+ wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);
180
+ }
181
+ }
140
182
  /**
141
183
  * @param {string} doc_name
142
184
  * @param {string} fact_values_json
@@ -158,21 +200,6 @@ export class WasmEngine {
158
200
  wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
159
201
  }
160
202
  }
161
- /**
162
- * @returns {string}
163
- */
164
- listDocuments() {
165
- let deferred1_0;
166
- let deferred1_1;
167
- try {
168
- const ret = wasm.wasmengine_listDocuments(this.__wbg_ptr);
169
- deferred1_0 = ret[0];
170
- deferred1_1 = ret[1];
171
- return getStringFromWasm0(ret[0], ret[1]);
172
- } finally {
173
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
174
- }
175
- }
176
203
  }
177
204
  if (Symbol.dispose) WasmEngine.prototype[Symbol.dispose] = WasmEngine.prototype.free;
178
205
 
package/lemma_bg.wasm CHANGED
Binary file
@@ -2,10 +2,11 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_wasmengine_free: (a: number, b: number) => void;
5
- export const wasmengine_new: () => number;
6
5
  export const wasmengine_addLemmaCode: (a: number, b: number, c: number, d: number, e: number) => [number, number];
7
6
  export const wasmengine_evaluate: (a: number, b: number, c: number, d: number, e: number) => [number, number];
7
+ export const wasmengine_invert: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
8
8
  export const wasmengine_listDocuments: (a: number) => [number, number];
9
+ export const wasmengine_new: () => number;
9
10
  export const __wbindgen_free: (a: number, b: number, c: number) => void;
10
11
  export const __wbindgen_malloc: (a: number, b: number) => number;
11
12
  export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benrogmans/lemma-engine",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "A language that means business.",
5
5
  "type": "module",
6
6
  "main": "lemma.js",