UNPKG

1.15 kBJavaScriptView Raw
1'use strict';
2
3const _ = require('lodash');
4const {
5 Setter,
6 Splice,
7 Push,
8 isSetterExpression,
9 isSpliceExpression,
10 isPushExpression,
11 isExpression,
12 withName
13} = require('./src/lang');
14const currentLine = require('./src/currentLine');
15
16const GLOBAL_TOKEN = '__$CARMI$__';
17if (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}
22global[GLOBAL_TOKEN] = currentLine();
23const {initProxyHandler} = require('./src/proxyHandler');
24const expressionBuilder = require('./src/expressionBuilder');
25const unwrapableProxy = require('./src/unwrapable-proxy');
26const compile = require('./src/compile');
27const frontend = require('./src/frontend');
28const sugar = require('./src/sugar');
29initProxyHandler({sugar, unwrapableProxy, expressionBuilder, frontend});
30
31const 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
46module.exports = API
47
48
49function withSchema() {
50 return API
51}