Skip to content

Commit 1ca6101

Browse files
committed
Arrange contracts and docs
1 parent ca8a7f4 commit 1ca6101

File tree

4 files changed

+45
-20
lines changed

4 files changed

+45
-20
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## [Unreleased][unreleased]
44

5+
- Add more CJS and ESM examples and tests
6+
- Move test examples to separate folders
7+
- Change test.fail to asserts
8+
- Refactor err to error
9+
- Optimize asserts and formatting
10+
511
## [1.4.5][] - 2025-08-31
612

713
- Update dependencies to latest versions

README.md

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ MetaScript {
3131
}
3232
```
3333

34-
Script contains function expression. You can use it for api endpoints, domain
35-
logic stored in files or database, etc.
34+
Script contains function expression. You can use it for api endpoints, domain logic stored in files or database, etc.
3635

3736
```js
3837
const metavm = require('metavm');
@@ -53,26 +52,40 @@ MetaScript {
5352
}
5453
```
5554

56-
## Read script from file
55+
CommonJS format
5756

5857
```js
59-
const metavm = require('.');
58+
const metavm = require('metavm');
6059

61-
(async () => {
62-
const ms = await metavm.readScript('./test/examples/simple.js');
63-
console.log(ms);
64-
})();
60+
const src = `module.exports = { field: 'value' };`;
61+
const ms = metavm.createScript('Example', src, {
62+
type: metavm.MODULE_TYPE.COMMONJS,
63+
});
64+
console.log(ms.exports); // { field: 'value' }
6565
```
6666

67-
Output:
67+
## Read script from file
68+
69+
Metarhia format
6870

71+
```js
72+
const metavm = require('metavm');
73+
74+
const ms = await metavm.readScript('./examples/metarhia/simple.js');
75+
console.log(ms.exports);
76+
// { field: 'value', add: [Function: add], sub: [Function: sub] }
6977
```
70-
MetaScript {
71-
name: 'simple',
72-
script: Script {},
73-
context: {},
74-
exports: { field: 'value', add: [Function: add], sub: [Function: sub] }
75-
}
78+
79+
CommonJS format
80+
81+
```js
82+
const metavm = require('metavm');
83+
84+
const ms = await metavm.readScript('./examples/cjssimple.js', {
85+
type: metavm.MODULE_TYPE.COMMONJS,
86+
});
87+
console.log(ms.exports);
88+
// { field: 'value', add: [Function: add], sub:[Function: sub] }
7689
```
7790

7891
## License & Contributors

metavm.d.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Context, Script, ScriptOptions, BaseOptions } from 'node:vm';
1+
import { Context, Script, ScriptOptions } from 'node:vm';
22

33
export const EMPTY_CONTEXT: Context;
44
export const COMMON_CONTEXT: Context;
@@ -11,22 +11,27 @@ export function createContext(
1111
preventEscape?: boolean,
1212
): Context;
1313

14-
declare enum ModuleType {
14+
export enum MODULE_TYPE {
1515
METARHIA = 1,
1616
COMMONJS = 2,
17+
ECMA = 3,
1718
}
1819

1920
export interface MetaScriptOptions extends ScriptOptions {
20-
type?: ModuleType;
21+
type?: MODULE_TYPE;
2122
dirname?: string;
2223
relative?: string;
2324
context?: Context;
24-
access?: object;
25+
access?: Record<string, boolean | object>;
2526
}
2627

2728
export class MetaScript {
2829
constructor(name: string, src: string, options?: MetaScriptOptions);
2930
name: string;
31+
dirname: string;
32+
relative: string;
33+
type: MODULE_TYPE;
34+
access: Record<string, boolean | object>;
3035
script: Script;
3136
context: Context;
3237
exports: any;
@@ -40,5 +45,5 @@ export function createScript(
4045

4146
export function readScript(
4247
filePath: string,
43-
options?: BaseOptions,
48+
options?: MetaScriptOptions,
4449
): Promise<MetaScript>;

metavm.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ const readScript = async (filePath, options) => {
180180
module.exports = {
181181
createContext,
182182
MetaScript,
183+
MetavmError,
183184
createScript,
184185
EMPTY_CONTEXT,
185186
COMMON_CONTEXT,

0 commit comments

Comments
 (0)