1 | 'use strict';
|
2 |
|
3 | const _ = require('lodash');
|
4 | const {
|
5 | Setter,
|
6 | Splice,
|
7 | Push,
|
8 | isSetterExpression,
|
9 | isSpliceExpression,
|
10 | isPushExpression,
|
11 | isExpression,
|
12 | withName
|
13 | } = require('./src/lang');
|
14 | const currentLine = require('./src/currentLine');
|
15 |
|
16 | const GLOBAL_TOKEN = '__$CARMI$__';
|
17 | if (global[GLOBAL_TOKEN]) {
|
18 | throw new Error(
|
19 | `require of multiple versions of Carmi is not supported previously loaded from:${global[GLOBAL_TOKEN]}`
|
20 | );
|
21 | }
|
22 | global[GLOBAL_TOKEN] = currentLine();
|
23 | const {initProxyHandler} = require('./src/proxyHandler');
|
24 | const expressionBuilder = require('./src/expressionBuilder');
|
25 | const unwrapableProxy = require('./src/unwrapable-proxy');
|
26 | const compile = require('./src/compile');
|
27 | const frontend = require('./src/frontend');
|
28 | const sugar = require('./src/sugar');
|
29 | initProxyHandler({sugar, unwrapableProxy, expressionBuilder, frontend});
|
30 |
|
31 | const API = {
|
32 | compile,
|
33 | setter: Setter,
|
34 | splice: Splice,
|
35 | push: Push,
|
36 | isSetterExpression,
|
37 | isSpliceExpression,
|
38 | isPushExpression,
|
39 | isExpression,
|
40 | withName,
|
41 | inferFromModel: _.identity,
|
42 | withSchema,
|
43 | ...frontend
|
44 | };
|
45 |
|
46 | module.exports = API
|
47 |
|
48 |
|
49 | function withSchema() {
|
50 | return API
|
51 | }
|