@j2inn/resolvable-ui-elements 1.0.2 → 1.0.3-alpha.0
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/dist/index.d.ts +5 -4
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/resolvableElements/Resolver.d.ts +30 -4
- package/dist/resolvableElements/Resolver.js +31 -6
- package/dist/resolvableElements/Resolver.js.map +1 -1
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +4 -8
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -1
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +1 -0
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -1
- package/dist/resolvableElements/elements/function/FunctionElement.js +2 -4
- package/dist/resolvableElements/elements/function/FunctionElement.js.map +1 -1
- package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +1 -0
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -1
- package/dist/resolvableElements/react/useResolverContext.d.ts +1 -0
- package/dist/resolvableElements/react/useResolverContext.jsx +14 -4
- package/dist/resolvableElements/react/useResolverContext.jsx.map +1 -1
- package/dist_es/index.d.ts +5 -4
- package/dist_es/index.js +6 -2
- package/dist_es/index.js.map +1 -1
- package/dist_es/resolvableElements/Resolver.d.ts +30 -4
- package/dist_es/resolvableElements/Resolver.js +31 -6
- package/dist_es/resolvableElements/Resolver.js.map +1 -1
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +5 -9
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +1 -0
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -1
- package/dist_es/resolvableElements/elements/function/FunctionElement.js +2 -4
- package/dist_es/resolvableElements/elements/function/FunctionElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +1 -0
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -1
- package/dist_es/resolvableElements/react/useResolverContext.d.ts +1 -0
- package/dist_es/resolvableElements/react/useResolverContext.jsx +14 -4
- package/dist_es/resolvableElements/react/useResolverContext.jsx.map +1 -1
- package/package.json +52 -52
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './resolvableElements/Resolver';
|
|
2
2
|
export { type ResolvableValueElementMeta } from './resolvableElements/elements/ResolvableValueElement';
|
|
3
|
+
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
3
4
|
export { type ResolvableExprElementMeta } from './resolvableElements/elements/expr/ResolvableExprElementMeta';
|
|
5
|
+
export { type FunctionResult } from './resolvableElements/elements/function/FunctionElement';
|
|
4
6
|
export { isSectionData, type ParametersOfSection, type ResolvedSection, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
5
|
-
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
6
|
-
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
7
7
|
export * from './resolvableElements/react/SectionChecker';
|
|
8
|
-
export * from './resolvableElements/react/useResolverContext';
|
|
9
8
|
export * from './resolvableElements/react/useResolveSection';
|
|
9
|
+
export * from './resolvableElements/react/useResolverContext';
|
|
10
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
10
11
|
export * from './useCurrentUser';
|
package/dist/index.js
CHANGED
|
@@ -18,16 +18,20 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.resolveTemplateExpression = exports.isSectionData = void 0;
|
|
21
|
+
//////////////////////////////////////////////////////////////////////////
|
|
22
|
+
// Elements
|
|
23
|
+
//////////////////////////////////////////////////////////////////////////
|
|
24
|
+
__exportStar(require("./resolvableElements/Resolver"), exports);
|
|
21
25
|
var SectionElementMeta_1 = require("./resolvableElements/elements/section/SectionElementMeta");
|
|
22
26
|
Object.defineProperty(exports, "isSectionData", { enumerable: true, get: function () { return SectionElementMeta_1.isSectionData; } });
|
|
23
|
-
var resolveTemplatedExpression_1 = require("./resolvableElements/resolveTemplatedExpression");
|
|
24
|
-
Object.defineProperty(exports, "resolveTemplateExpression", { enumerable: true, get: function () { return resolveTemplatedExpression_1.resolveTemplateExpression; } });
|
|
25
27
|
//////////////////////////////////////////////////////////////////////////
|
|
26
28
|
// React
|
|
27
29
|
//////////////////////////////////////////////////////////////////////////
|
|
28
30
|
__exportStar(require("./resolvableElements/react/SectionChecker"), exports);
|
|
29
|
-
__exportStar(require("./resolvableElements/react/useResolverContext"), exports);
|
|
30
31
|
__exportStar(require("./resolvableElements/react/useResolveSection"), exports);
|
|
32
|
+
__exportStar(require("./resolvableElements/react/useResolverContext"), exports);
|
|
33
|
+
var resolveTemplatedExpression_1 = require("./resolvableElements/resolveTemplatedExpression");
|
|
34
|
+
Object.defineProperty(exports, "resolveTemplateExpression", { enumerable: true, get: function () { return resolveTemplatedExpression_1.resolveTemplateExpression; } });
|
|
31
35
|
//////////////////////////////////////////////////////////////////////////
|
|
32
36
|
// Other
|
|
33
37
|
//////////////////////////////////////////////////////////////////////////
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0EAA0E;AAC1E,WAAW;AACX,0EAA0E;AAC1E,gEAA6C;AAK7C,+FAIiE;AAHhE,mHAAA,aAAa,OAAA;AAId,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,4EAAyD;AACzD,+EAA4D;AAC5D,gFAA6D;AAC7D,8FAA2F;AAAlF,uIAAA,yBAAyB,OAAA;AAClC,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,mDAAgC"}
|
|
@@ -2,20 +2,46 @@ import { HDict, HGrid } from 'haystack-core';
|
|
|
2
2
|
import { Client, Watch } from 'haystack-nclient';
|
|
3
3
|
export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
|
|
4
4
|
export interface ResolverData {
|
|
5
|
+
/**
|
|
6
|
+
* Haystack client for network communication
|
|
7
|
+
*/
|
|
5
8
|
client: Client;
|
|
9
|
+
/**
|
|
10
|
+
* Current user dict, used to check permissions
|
|
11
|
+
*/
|
|
6
12
|
user?: HDict;
|
|
13
|
+
/**
|
|
14
|
+
* Name of the tag that is expected on the user dict to define its role
|
|
15
|
+
*/
|
|
7
16
|
userRoleTagName?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Function name to be used for expressions eval,
|
|
19
|
+
* used to enable custom backend permission check using elements path
|
|
20
|
+
* @example
|
|
21
|
+
* customEval(\`page/section/elementName\`, parametersDict)
|
|
22
|
+
*/
|
|
23
|
+
evalFuncName?: string;
|
|
8
24
|
}
|
|
9
25
|
/**
|
|
10
26
|
* Resolver is a mediator for the network interactions during the resolution process,
|
|
11
|
-
* in order to enable future optimizations
|
|
27
|
+
* in order to enable future optimizations and extra features
|
|
12
28
|
*/
|
|
13
|
-
export declare class Resolver {
|
|
14
|
-
constructor({ client, user, userRoleTagName, }: ResolverData);
|
|
29
|
+
export declare class Resolver implements ResolverData {
|
|
30
|
+
constructor({ client, user, userRoleTagName, evalFuncName, }: ResolverData);
|
|
15
31
|
client: Client;
|
|
16
32
|
user?: HDict;
|
|
17
33
|
userRoleTagName?: string;
|
|
34
|
+
evalFuncName?: string;
|
|
18
35
|
read(filter: string): Promise<HGrid<HDict>>;
|
|
19
36
|
makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
|
|
20
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
39
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
40
|
+
*/
|
|
41
|
+
evalExprElement(expr: string, parameters: HDict, path?: string): Promise<HGrid<HDict>>;
|
|
42
|
+
private _buildExpression;
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate an expression
|
|
45
|
+
*/
|
|
46
|
+
private _eval;
|
|
21
47
|
}
|
|
@@ -4,28 +4,53 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Resolver = exports.DEFAULT_USER_ROLE_TAG_NAME = void 0;
|
|
7
|
+
const resolveTemplatedExpression_1 = require("./resolveTemplatedExpression");
|
|
7
8
|
exports.DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
|
|
8
9
|
/**
|
|
9
10
|
* Resolver is a mediator for the network interactions during the resolution process,
|
|
10
|
-
* in order to enable future optimizations
|
|
11
|
+
* in order to enable future optimizations and extra features
|
|
11
12
|
*/
|
|
12
13
|
class Resolver {
|
|
13
|
-
constructor({ client, user, userRoleTagName = exports.DEFAULT_USER_ROLE_TAG_NAME, }) {
|
|
14
|
+
constructor({ client, user, userRoleTagName = exports.DEFAULT_USER_ROLE_TAG_NAME, evalFuncName, }) {
|
|
14
15
|
this.client = client;
|
|
15
16
|
this.user = user;
|
|
16
17
|
this.userRoleTagName = userRoleTagName;
|
|
18
|
+
this.evalFuncName = evalFuncName;
|
|
17
19
|
}
|
|
18
20
|
client;
|
|
19
21
|
user;
|
|
20
22
|
userRoleTagName;
|
|
21
|
-
|
|
23
|
+
evalFuncName;
|
|
24
|
+
read(filter) {
|
|
22
25
|
return this.client.ext.read(filter);
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
makeWatch(dis, grid) {
|
|
25
28
|
return this.client.ops.watch.make(dis, grid);
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
32
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
33
|
+
*/
|
|
34
|
+
evalExprElement(expr, parameters, path) {
|
|
35
|
+
return this._eval(this._buildExpression(expr, parameters, path));
|
|
36
|
+
}
|
|
37
|
+
_buildExpression(expr, parameters, path) {
|
|
38
|
+
if (!!path && this.evalFuncName) {
|
|
39
|
+
return `${this.evalFuncName}(\`${path}\`, ${parameters.toAxon()})`;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, parameters);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Evaluate an expression
|
|
47
|
+
*/
|
|
48
|
+
async _eval(expr) {
|
|
49
|
+
const grid = await this.client.ext.eval(expr);
|
|
50
|
+
if (grid.isError()) {
|
|
51
|
+
console.error('Empty grid result for expression: \n', expr, grid.getError());
|
|
52
|
+
}
|
|
53
|
+
return grid;
|
|
29
54
|
}
|
|
30
55
|
}
|
|
31
56
|
exports.Resolver = Resolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH,6EAAwE;AAE3D,QAAA,0BAA0B,GAAG,sBAAsB,CAAA;AAwBhE;;;GAGG;AACH,MAAa,QAAQ;IACpB,YAAY,EACX,MAAM,EACN,IAAI,EACJ,eAAe,GAAG,kCAA0B,EAC5C,YAAY,GACE;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACjC,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,eAAe,CAAS;IACxB,YAAY,CAAS;IAErB,IAAI,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,eAAe,CACd,IAAY,EACZ,UAAiB,EACjB,IAAa;QAEb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;IACjE,CAAC;IAEO,gBAAgB,CACvB,IAAY,EACZ,UAAiB,EACjB,IAAa;QAEb,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,CAAA;SAClE;aAAM;YACN,OAAO,IAAA,sDAAyB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SAClD;IACF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,KAAK,CAAC,IAAY;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CACZ,sCAAsC,EACtC,IAAI,EACJ,IAAI,CAAC,QAAQ,EAAE,CACf,CAAA;SACD;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;CACD;AAlED,4BAkEC"}
|
|
@@ -22,16 +22,12 @@ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElem
|
|
|
22
22
|
await this.#updateValue(parameters);
|
|
23
23
|
};
|
|
24
24
|
#updateValue = async (parameters) => {
|
|
25
|
-
const { expr, refreshAfter } = this
|
|
26
|
-
|
|
27
|
-
const grid = await this.resolver.
|
|
28
|
-
if (grid.isError()) {
|
|
29
|
-
console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const val = grid[0]?.get('val');
|
|
25
|
+
const { expr, refreshAfter, path } = this
|
|
26
|
+
._meta;
|
|
27
|
+
const grid = await this.resolver.evalExprElement(expr, parameters, path);
|
|
33
28
|
// Identify when it's necessary to unpack the result `val` or not
|
|
34
29
|
// since the eval wraps the result value in a grid's first dict `val` tag for non-collections.
|
|
30
|
+
const val = grid[0]?.get('val');
|
|
35
31
|
const shouldUnpackResult = !this.isExpectedResultACollection() && val;
|
|
36
32
|
if (shouldUnpackResult) {
|
|
37
33
|
this.value = val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA2C;AAC3C,mDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA2C;AAC3C,mDAAoD;AACpD,iFAA2E;AAE3E,sEAAkE;AAIlE;;GAEG;AACH,MAAa,qBAEX,SAAQ,+CAAyB;IAClC,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpD,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,SAAS,GAAG,CAAC,CAAA;IACb,QAAQ,CAAS;IAEP,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACnE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACzD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI;aACvC,KAAkC,CAAA;QAEpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAExE,iEAAiE;QACjE,8FAA8F;QAC9F,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,GAAG,CAAA;QACrE,IAAI,kBAAkB,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;SAChB;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;SACjB;QAED,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC,EAAE,oBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAM,CAAC,CAAC,SAAS,CAAC,4BAAW,CAAC,CAAC,KAAK,CAAsB,CAAA;SACrF;IACF,CAAC,CAAA;IAED;;;OAGG;IACH,2BAA2B,GAAG,GAAY,EAAE;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAEhE,OAAO,CACN,qBAAqB,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;YACvD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3B,CAAA;IACF,CAAC,CAAA;IAES,OAAO,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC3B;IACF,CAAC,CAAA;IAED,gBAAgB,GAAmB,GAAG,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAExD,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,IAAI,IAAI,EAAE;YACT,IAAA,qDAAwB,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACtB,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;SACF;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;;AAxEF,sDAyEC"}
|
|
@@ -4,6 +4,7 @@ export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
|
|
|
4
4
|
resolutionType: 'expr';
|
|
5
5
|
expr: string;
|
|
6
6
|
refreshAfter: number;
|
|
7
|
+
path?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
|
|
9
10
|
export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAYI,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,mCAA2B,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC;AAEM,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.makeParametersDict = exports.FunctionElement = void 0;
|
|
7
7
|
const haystack_core_1 = require("haystack-core");
|
|
8
|
-
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
9
8
|
const UiElement_1 = require("../UiElement");
|
|
10
9
|
/**
|
|
11
10
|
* Resolves to a function that can be called to achieve side effects.
|
|
@@ -18,10 +17,9 @@ class FunctionElement extends UiElement_1.UiElement {
|
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
#buildFunction = () => {
|
|
21
|
-
const { expr } = this._meta;
|
|
20
|
+
const { expr, path } = this._meta;
|
|
22
21
|
return async (parameters) => {
|
|
23
|
-
const
|
|
24
|
-
const result = await this.resolver.eval(resolvedExpression);
|
|
22
|
+
const result = await this.resolver.evalExprElement(expr, (0, exports.makeParametersDict)(parameters), path);
|
|
25
23
|
// Update watch records
|
|
26
24
|
if (!result.isError()) {
|
|
27
25
|
this.resolver.client.ops.watch.update(result.filter('id and mod'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgF;
|
|
1
|
+
{"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgF;AAEhF,4CAIqB;AAGrB;;GAEG;AACH,MAAa,eAAyC,SAAQ,qBAAY;IACzE,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;SAClC;IACF,CAAC;IAED,cAAc,GAAG,GAAmB,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAA4B,CAAA;QAExD,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACjD,IAAI,EACJ,IAAA,0BAAkB,EAAC,UAAU,CAAC,EAC9B,IAAI,CACJ,CAAA;YAED,uBAAuB;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAC3B,CAAA;aACD;YAED,OAAO,MAAM,CAAA;QACd,CAAC,CAAA;IACF,CAAC,CAAA;CACD;AA5BD,0CA4BC;AAUM,MAAM,kBAAkB,GAAG,CACjC,UAIY,EACJ,EAAE;IACV,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,qBAAK,CAAC,IAAI,EAAE,CAAA;KACnB;IACD,IAAI,UAAU,YAAY,qBAAK,EAAE;QAChC,OAAO,UAAU,CAAA;KACjB;IAED,OAAO,qBAAK,CAAC,IAAI,CAChB,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CACvD,CACD,CAAA;AACF,CAAC,CAAA;AAnBY,QAAA,kBAAkB,sBAmB9B"}
|
|
@@ -3,6 +3,7 @@ import { UiElementData, UiElementMeta } from '../UiElement';
|
|
|
3
3
|
export interface FunctionElementMeta extends ResolvableValueElementMeta {
|
|
4
4
|
resolutionType: 'function';
|
|
5
5
|
expr: string;
|
|
6
|
+
path?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare const isFunctionElementData: (element: UiElementData) => element is UiElementData<FunctionElementMeta>;
|
|
8
9
|
export declare const isFunctionElementMeta: (meta: UiElementMeta) => meta is FunctionElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUI,MAAM,qBAAqB,GAAG,CACpC,OAAsB,EAC0B,EAAE;IAClD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,6BAAqB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,qBAAqB,GAAG,CACpC,IAAmB,EACW,EAAE;IAChC,OAAQ,IAA4B,CAAC,cAAc,KAAK,UAAU,CAAA;AACnE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC"}
|
|
@@ -3,6 +3,7 @@ import { Resolver } from '../Resolver';
|
|
|
3
3
|
export declare function useResolverContext(): Resolver;
|
|
4
4
|
interface ResolverProviderProps extends PropsWithChildren {
|
|
5
5
|
userRoleTagName?: string;
|
|
6
|
+
evalFuncName?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare const ResolverProvider: React.FC<ResolverProviderProps>;
|
|
8
9
|
export {};
|
|
@@ -42,13 +42,23 @@ function useResolverContext() {
|
|
|
42
42
|
return (0, react_1.useContext)(ResolverContext);
|
|
43
43
|
}
|
|
44
44
|
exports.useResolverContext = useResolverContext;
|
|
45
|
-
const ResolverProvider = ({ userRoleTagName, children, }) => {
|
|
45
|
+
const ResolverProvider = ({ userRoleTagName, evalFuncName, children, }) => {
|
|
46
46
|
const client = (0, haystack_react_1.useClient)();
|
|
47
47
|
const user = (0, useCurrentUser_1.useCurrentUser)();
|
|
48
|
-
const [resolver, setResolver] = (0, react_1.useState)(() => new Resolver_1.Resolver({
|
|
48
|
+
const [resolver, setResolver] = (0, react_1.useState)(() => new Resolver_1.Resolver({
|
|
49
|
+
client,
|
|
50
|
+
user,
|
|
51
|
+
userRoleTagName,
|
|
52
|
+
evalFuncName,
|
|
53
|
+
}));
|
|
49
54
|
(0, react_1.useEffect)(() => {
|
|
50
|
-
setResolver(new Resolver_1.Resolver({
|
|
51
|
-
|
|
55
|
+
setResolver(new Resolver_1.Resolver({
|
|
56
|
+
client,
|
|
57
|
+
user,
|
|
58
|
+
userRoleTagName,
|
|
59
|
+
evalFuncName,
|
|
60
|
+
}));
|
|
61
|
+
}, [client, user, userRoleTagName, evalFuncName]);
|
|
52
62
|
return (<ResolverContext.Provider value={resolver}>
|
|
53
63
|
{children}
|
|
54
64
|
</ResolverContext.Provider>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,mDAA0C;AAC1C,+CAKc;AACd,yDAAqD;AACrD,0CAAsC;AAEtC,MAAM,eAAe,GAAG,eAAK,CAAC,aAAa,CAC1C,IAAI,mBAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,yBAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,SAAgB,kBAAkB;IACjC,OAAO,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAFD,gDAEC;
|
|
1
|
+
{"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,mDAA0C;AAC1C,+CAKc;AACd,yDAAqD;AACrD,0CAAsC;AAEtC,MAAM,eAAe,GAAG,eAAK,CAAC,aAAa,CAC1C,IAAI,mBAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,yBAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,SAAgB,kBAAkB;IACjC,OAAO,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAFD,gDAEC;AAOM,MAAM,gBAAgB,GAAoC,CAAC,EACjE,eAAe,EACf,YAAY,EACZ,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAA,+BAAc,GAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EACvC,GAAG,EAAE,CACJ,IAAI,mBAAQ,CAAC;QACZ,MAAM;QACN,IAAI;QACJ,eAAe;QACf,YAAY;KACZ,CAAC,CACH,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,WAAW,CACV,IAAI,mBAAQ,CAAC;YACZ,MAAM;YACN,IAAI;YACJ,eAAe;YACf,YAAY;SACZ,CAAC,CACF,CAAA;IACF,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAA;IAEjD,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA;AAlCY,QAAA,gBAAgB,oBAkC5B"}
|
package/dist_es/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './resolvableElements/Resolver';
|
|
2
2
|
export { type ResolvableValueElementMeta } from './resolvableElements/elements/ResolvableValueElement';
|
|
3
|
+
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
3
4
|
export { type ResolvableExprElementMeta } from './resolvableElements/elements/expr/ResolvableExprElementMeta';
|
|
5
|
+
export { type FunctionResult } from './resolvableElements/elements/function/FunctionElement';
|
|
4
6
|
export { isSectionData, type ParametersOfSection, type ResolvedSection, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
5
|
-
export { type UiElementData } from './resolvableElements/elements/UiElement';
|
|
6
|
-
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
7
7
|
export * from './resolvableElements/react/SectionChecker';
|
|
8
|
-
export * from './resolvableElements/react/useResolverContext';
|
|
9
8
|
export * from './resolvableElements/react/useResolveSection';
|
|
9
|
+
export * from './resolvableElements/react/useResolverContext';
|
|
10
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
10
11
|
export * from './useCurrentUser';
|
package/dist_es/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
3
|
*/
|
|
4
|
+
//////////////////////////////////////////////////////////////////////////
|
|
5
|
+
// Elements
|
|
6
|
+
//////////////////////////////////////////////////////////////////////////
|
|
7
|
+
export * from './resolvableElements/Resolver';
|
|
4
8
|
export { isSectionData, } from './resolvableElements/elements/section/SectionElementMeta';
|
|
5
|
-
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
6
9
|
//////////////////////////////////////////////////////////////////////////
|
|
7
10
|
// React
|
|
8
11
|
//////////////////////////////////////////////////////////////////////////
|
|
9
12
|
export * from './resolvableElements/react/SectionChecker';
|
|
10
|
-
export * from './resolvableElements/react/useResolverContext';
|
|
11
13
|
export * from './resolvableElements/react/useResolveSection';
|
|
14
|
+
export * from './resolvableElements/react/useResolverContext';
|
|
15
|
+
export { resolveTemplateExpression } from './resolvableElements/resolveTemplatedExpression';
|
|
12
16
|
//////////////////////////////////////////////////////////////////////////
|
|
13
17
|
// Other
|
|
14
18
|
//////////////////////////////////////////////////////////////////////////
|
package/dist_es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,WAAW;AACX,0EAA0E;AAC1E,cAAc,+BAA+B,CAAA;AAK7C,OAAO,EACN,aAAa,GAGb,MAAM,0DAA0D,CAAA;AACjE,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,2CAA2C,CAAA;AACzD,cAAc,8CAA8C,CAAA;AAC5D,cAAc,+CAA+C,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAA;AAC3F,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,kBAAkB,CAAA"}
|
|
@@ -2,20 +2,46 @@ import { HDict, HGrid } from 'haystack-core';
|
|
|
2
2
|
import { Client, Watch } from 'haystack-nclient';
|
|
3
3
|
export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
|
|
4
4
|
export interface ResolverData {
|
|
5
|
+
/**
|
|
6
|
+
* Haystack client for network communication
|
|
7
|
+
*/
|
|
5
8
|
client: Client;
|
|
9
|
+
/**
|
|
10
|
+
* Current user dict, used to check permissions
|
|
11
|
+
*/
|
|
6
12
|
user?: HDict;
|
|
13
|
+
/**
|
|
14
|
+
* Name of the tag that is expected on the user dict to define its role
|
|
15
|
+
*/
|
|
7
16
|
userRoleTagName?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Function name to be used for expressions eval,
|
|
19
|
+
* used to enable custom backend permission check using elements path
|
|
20
|
+
* @example
|
|
21
|
+
* customEval(\`page/section/elementName\`, parametersDict)
|
|
22
|
+
*/
|
|
23
|
+
evalFuncName?: string;
|
|
8
24
|
}
|
|
9
25
|
/**
|
|
10
26
|
* Resolver is a mediator for the network interactions during the resolution process,
|
|
11
|
-
* in order to enable future optimizations
|
|
27
|
+
* in order to enable future optimizations and extra features
|
|
12
28
|
*/
|
|
13
|
-
export declare class Resolver {
|
|
14
|
-
constructor({ client, user, userRoleTagName, }: ResolverData);
|
|
29
|
+
export declare class Resolver implements ResolverData {
|
|
30
|
+
constructor({ client, user, userRoleTagName, evalFuncName, }: ResolverData);
|
|
15
31
|
client: Client;
|
|
16
32
|
user?: HDict;
|
|
17
33
|
userRoleTagName?: string;
|
|
34
|
+
evalFuncName?: string;
|
|
18
35
|
read(filter: string): Promise<HGrid<HDict>>;
|
|
19
36
|
makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
|
|
20
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
39
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
40
|
+
*/
|
|
41
|
+
evalExprElement(expr: string, parameters: HDict, path?: string): Promise<HGrid<HDict>>;
|
|
42
|
+
private _buildExpression;
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate an expression
|
|
45
|
+
*/
|
|
46
|
+
private _eval;
|
|
21
47
|
}
|
|
@@ -1,28 +1,53 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
3
|
*/
|
|
4
|
+
import { resolveTemplateExpression } from './resolveTemplatedExpression';
|
|
4
5
|
export const DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
|
|
5
6
|
/**
|
|
6
7
|
* Resolver is a mediator for the network interactions during the resolution process,
|
|
7
|
-
* in order to enable future optimizations
|
|
8
|
+
* in order to enable future optimizations and extra features
|
|
8
9
|
*/
|
|
9
10
|
export class Resolver {
|
|
10
|
-
constructor({ client, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME, }) {
|
|
11
|
+
constructor({ client, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME, evalFuncName, }) {
|
|
11
12
|
this.client = client;
|
|
12
13
|
this.user = user;
|
|
13
14
|
this.userRoleTagName = userRoleTagName;
|
|
15
|
+
this.evalFuncName = evalFuncName;
|
|
14
16
|
}
|
|
15
17
|
client;
|
|
16
18
|
user;
|
|
17
19
|
userRoleTagName;
|
|
18
|
-
|
|
20
|
+
evalFuncName;
|
|
21
|
+
read(filter) {
|
|
19
22
|
return this.client.ext.read(filter);
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
makeWatch(dis, grid) {
|
|
22
25
|
return this.client.ops.watch.make(dis, grid);
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Eval an expression using either the provided path or otherwse directly the expression
|
|
29
|
+
* Providing the path allows for whitelisting of certain functions to specific user roles
|
|
30
|
+
*/
|
|
31
|
+
evalExprElement(expr, parameters, path) {
|
|
32
|
+
return this._eval(this._buildExpression(expr, parameters, path));
|
|
33
|
+
}
|
|
34
|
+
_buildExpression(expr, parameters, path) {
|
|
35
|
+
if (!!path && this.evalFuncName) {
|
|
36
|
+
return `${this.evalFuncName}(\`${path}\`, ${parameters.toAxon()})`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return resolveTemplateExpression(expr, parameters);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Evaluate an expression
|
|
44
|
+
*/
|
|
45
|
+
async _eval(expr) {
|
|
46
|
+
const grid = await this.client.ext.eval(expr);
|
|
47
|
+
if (grid.isError()) {
|
|
48
|
+
console.error('Empty grid result for expression: \n', expr, grid.getError());
|
|
49
|
+
}
|
|
50
|
+
return grid;
|
|
26
51
|
}
|
|
27
52
|
}
|
|
28
53
|
//# sourceMappingURL=Resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAExE,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAA;AAwBhE;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACpB,YAAY,EACX,MAAM,EACN,IAAI,EACJ,eAAe,GAAG,0BAA0B,EAC5C,YAAY,GACE;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACjC,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,eAAe,CAAS;IACxB,YAAY,CAAS;IAErB,IAAI,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,eAAe,CACd,IAAY,EACZ,UAAiB,EACjB,IAAa;QAEb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;IACjE,CAAC;IAEO,gBAAgB,CACvB,IAAY,EACZ,UAAiB,EACjB,IAAa;QAEb,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,CAAA;SAClE;aAAM;YACN,OAAO,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SAClD;IACF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,KAAK,CAAC,IAAY;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CACZ,sCAAsC,EACtC,IAAI,EACJ,IAAI,CAAC,QAAQ,EAAE,CACf,CAAA;SACD;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { HNum } from 'haystack-core';
|
|
5
5
|
import { millisecond, second } from 'haystack-units';
|
|
6
|
-
import { replaceTemplateVariables
|
|
6
|
+
import { replaceTemplateVariables } from '../../resolveTemplatedExpression';
|
|
7
7
|
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
8
8
|
/**
|
|
9
9
|
* Resolves to the result of an expression.
|
|
@@ -19,16 +19,12 @@ export class ResolvableExprElement extends ResolvableValueElement {
|
|
|
19
19
|
await this.#updateValue(parameters);
|
|
20
20
|
};
|
|
21
21
|
#updateValue = async (parameters) => {
|
|
22
|
-
const { expr, refreshAfter } = this
|
|
23
|
-
|
|
24
|
-
const grid = await this.resolver.
|
|
25
|
-
if (grid.isError()) {
|
|
26
|
-
console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const val = grid[0]?.get('val');
|
|
22
|
+
const { expr, refreshAfter, path } = this
|
|
23
|
+
._meta;
|
|
24
|
+
const grid = await this.resolver.evalExprElement(expr, parameters, path);
|
|
30
25
|
// Identify when it's necessary to unpack the result `val` or not
|
|
31
26
|
// since the eval wraps the result value in a grid's first dict `val` tag for non-collections.
|
|
27
|
+
const val = grid[0]?.get('val');
|
|
32
28
|
const shouldUnpackResult = !this.isExpectedResultACollection() && val;
|
|
33
29
|
if (shouldUnpackResult) {
|
|
34
30
|
this.value = val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAIlE;;GAEG;AACH,MAAM,OAAO,qBAEX,SAAQ,sBAAyB;IAClC,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpD,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,SAAS,GAAG,CAAC,CAAA;IACb,QAAQ,CAAS;IAEP,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACnE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACzD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI;aACvC,KAAkC,CAAA;QAEpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAExE,iEAAiE;QACjE,8FAA8F;QAC9F,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,GAAG,CAAA;QACrE,IAAI,kBAAkB,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;SAChB;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;SACjB;QAED,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAsB,CAAA;SACrF;IACF,CAAC,CAAA;IAED;;;OAGG;IACH,2BAA2B,GAAG,GAAY,EAAE;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAEhE,OAAO,CACN,qBAAqB,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;YACvD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3B,CAAA;IACF,CAAC,CAAA;IAES,OAAO,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC3B;IACF,CAAC,CAAA;IAED,gBAAgB,GAAmB,GAAG,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAExD,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,IAAI,IAAI,EAAE;YACT,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACtB,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;SACF;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA"}
|
|
@@ -4,6 +4,7 @@ export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
|
|
|
4
4
|
resolutionType: 'expr';
|
|
5
5
|
expr: string;
|
|
6
6
|
refreshAfter: number;
|
|
7
|
+
path?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
|
|
9
10
|
export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
3
|
*/
|
|
4
4
|
import { HDict } from 'haystack-core';
|
|
5
|
-
import { resolveTemplateExpression } from '../../resolveTemplatedExpression';
|
|
6
5
|
import { UiElement, } from '../UiElement';
|
|
7
6
|
/**
|
|
8
7
|
* Resolves to a function that can be called to achieve side effects.
|
|
@@ -15,10 +14,9 @@ export class FunctionElement extends UiElement {
|
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
16
|
#buildFunction = () => {
|
|
18
|
-
const { expr } = this._meta;
|
|
17
|
+
const { expr, path } = this._meta;
|
|
19
18
|
return async (parameters) => {
|
|
20
|
-
const
|
|
21
|
-
const result = await this.resolver.eval(resolvedExpression);
|
|
19
|
+
const result = await this.resolver.evalExprElement(expr, makeParametersDict(parameters), path);
|
|
22
20
|
// Update watch records
|
|
23
21
|
if (!result.isError()) {
|
|
24
22
|
this.resolver.client.ops.watch.update(result.filter('id and mod'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAwB,KAAK,EAAuB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAwB,KAAK,EAAuB,MAAM,eAAe,CAAA;AAEhF,OAAO,EACN,SAAS,GAGT,MAAM,cAAc,CAAA;AAGrB;;GAEG;AACH,MAAM,OAAO,eAAyC,SAAQ,SAAY;IACzE,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;SAClC;IACF,CAAC;IAED,cAAc,GAAG,GAAmB,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAA4B,CAAA;QAExD,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACjD,IAAI,EACJ,kBAAkB,CAAC,UAAU,CAAC,EAC9B,IAAI,CACJ,CAAA;YAED,uBAAuB;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAC3B,CAAA;aACD;YAED,OAAO,MAAM,CAAA;QACd,CAAC,CAAA;IACF,CAAC,CAAA;CACD;AAUD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAIY,EACJ,EAAE;IACV,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;KACnB;IACD,IAAI,UAAU,YAAY,KAAK,EAAE;QAChC,OAAO,UAAU,CAAA;KACjB;IAED,OAAO,KAAK,CAAC,IAAI,CAChB,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CACvD,CACD,CAAA;AACF,CAAC,CAAA"}
|
|
@@ -3,6 +3,7 @@ import { UiElementData, UiElementMeta } from '../UiElement';
|
|
|
3
3
|
export interface FunctionElementMeta extends ResolvableValueElementMeta {
|
|
4
4
|
resolutionType: 'function';
|
|
5
5
|
expr: string;
|
|
6
|
+
path?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare const isFunctionElementData: (element: UiElementData) => element is UiElementData<FunctionElementMeta>;
|
|
8
9
|
export declare const isFunctionElementMeta: (meta: UiElementMeta) => meta is FunctionElementMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,OAAsB,EAC0B,EAAE;IAClD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,IAAmB,EACW,EAAE;IAChC,OAAQ,IAA4B,CAAC,cAAc,KAAK,UAAU,CAAA;AACnE,CAAC,CAAA"}
|
|
@@ -3,6 +3,7 @@ import { Resolver } from '../Resolver';
|
|
|
3
3
|
export declare function useResolverContext(): Resolver;
|
|
4
4
|
interface ResolverProviderProps extends PropsWithChildren {
|
|
5
5
|
userRoleTagName?: string;
|
|
6
|
+
evalFuncName?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare const ResolverProvider: React.FC<ResolverProviderProps>;
|
|
8
9
|
export {};
|
|
@@ -15,13 +15,23 @@ ResolverContext.displayName = 'ResolverContext';
|
|
|
15
15
|
export function useResolverContext() {
|
|
16
16
|
return useContext(ResolverContext);
|
|
17
17
|
}
|
|
18
|
-
export const ResolverProvider = ({ userRoleTagName, children, }) => {
|
|
18
|
+
export const ResolverProvider = ({ userRoleTagName, evalFuncName, children, }) => {
|
|
19
19
|
const client = useClient();
|
|
20
20
|
const user = useCurrentUser();
|
|
21
|
-
const [resolver, setResolver] = useState(() => new Resolver({
|
|
21
|
+
const [resolver, setResolver] = useState(() => new Resolver({
|
|
22
|
+
client,
|
|
23
|
+
user,
|
|
24
|
+
userRoleTagName,
|
|
25
|
+
evalFuncName,
|
|
26
|
+
}));
|
|
22
27
|
useEffect(() => {
|
|
23
|
-
setResolver(new Resolver({
|
|
24
|
-
|
|
28
|
+
setResolver(new Resolver({
|
|
29
|
+
client,
|
|
30
|
+
user,
|
|
31
|
+
userRoleTagName,
|
|
32
|
+
evalFuncName,
|
|
33
|
+
}));
|
|
34
|
+
}, [client, user, userRoleTagName, evalFuncName]);
|
|
25
35
|
return (<ResolverContext.Provider value={resolver}>
|
|
26
36
|
{children}
|
|
27
37
|
</ResolverContext.Provider>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,EAEb,UAAU,EACV,SAAS,EACT,QAAQ,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAC1C,IAAI,QAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,MAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,MAAM,UAAU,kBAAkB;IACjC,OAAO,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,EAEb,UAAU,EACV,SAAS,EACT,QAAQ,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAC1C,IAAI,QAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,MAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,MAAM,UAAU,kBAAkB;IACjC,OAAO,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAOD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EACjE,eAAe,EACf,YAAY,EACZ,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CACvC,GAAG,EAAE,CACJ,IAAI,QAAQ,CAAC;QACZ,MAAM;QACN,IAAI;QACJ,eAAe;QACf,YAAY;KACZ,CAAC,CACH,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACd,WAAW,CACV,IAAI,QAAQ,CAAC;YACZ,MAAM;YACN,IAAI;YACJ,eAAe;YACf,YAAY;SACZ,CAAC,CACF,CAAA;IACF,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAA;IAEjD,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@j2inn/resolvable-ui-elements",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"module": "dist_es/index.js",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"clean": "rimraf ./dist && rimraf ./dist_es",
|
|
10
|
-
"prebuild": "npm run clean && npm run lint && npm run test",
|
|
11
|
-
"build": "tsc && npm run-script build:es",
|
|
12
|
-
"build:es": "tsc --module ESNext --outDir dist_es",
|
|
13
|
-
"checktypes": "tsc --noEmit",
|
|
14
|
-
"format": "prettier-eslint --list-different --write \"$(pwd)/src/**/*.{ts,tsx,js,jsx}\"",
|
|
15
|
-
"lint": "eslint --fix --ext ts,tsx,js,jsx src/",
|
|
16
|
-
"test": "jest --passWithNoTests",
|
|
17
|
-
"prepack": "npm run lint && npm run test && npm run build"
|
|
18
|
-
},
|
|
19
|
-
"author": "",
|
|
20
|
-
"license": "ISC",
|
|
21
|
-
"files": [
|
|
22
|
-
"dist/**/*",
|
|
23
|
-
"dist_es/**/*"
|
|
24
|
-
],
|
|
25
|
-
"peerDependencies": {
|
|
26
|
-
"haystack-core": "^2.0.45",
|
|
27
|
-
"haystack-nclient": "^3.0.32",
|
|
28
|
-
"haystack-react": "^3.0.17",
|
|
29
|
-
"haystack-units": "^1.0.22",
|
|
30
|
-
"react": "^18.2.0",
|
|
31
|
-
"react-dom": "^18.2.0"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@types/jest": "^27.4.0",
|
|
35
|
-
"@types/node": "^15.0.2",
|
|
36
|
-
"@types/react": "^18.0.18",
|
|
37
|
-
"@types/react-dom": "^18.0.6",
|
|
38
|
-
"@typescript-eslint/eslint-plugin": "^5.28.0",
|
|
39
|
-
"@typescript-eslint/parser": "^5.28.0",
|
|
40
|
-
"eslint": "^7.32.0",
|
|
41
|
-
"eslint-config-prettier": "^8.3.0",
|
|
42
|
-
"eslint-plugin-jest": "^26.1.3",
|
|
43
|
-
"eslint-plugin-prettier": "^4.0.0",
|
|
44
|
-
"eslint-plugin-react": "^7.29.4",
|
|
45
|
-
"prettier": "^2.6.1",
|
|
46
|
-
"prettier-eslint": "^13.0.0",
|
|
47
|
-
"prettier-eslint-cli": "^5.0.1",
|
|
48
|
-
"rimraf": "^3.0.2",
|
|
49
|
-
"ts-jest": "^28.0.8",
|
|
50
|
-
"typescript": "^4.8.2"
|
|
51
|
-
}
|
|
52
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@j2inn/resolvable-ui-elements",
|
|
3
|
+
"version": "1.0.3-alpha.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"module": "dist_es/index.js",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"clean": "rimraf ./dist && rimraf ./dist_es",
|
|
10
|
+
"prebuild": "npm run clean && npm run lint && npm run test",
|
|
11
|
+
"build": "tsc && npm run-script build:es",
|
|
12
|
+
"build:es": "tsc --module ESNext --outDir dist_es",
|
|
13
|
+
"checktypes": "tsc --noEmit",
|
|
14
|
+
"format": "prettier-eslint --list-different --write \"$(pwd)/src/**/*.{ts,tsx,js,jsx}\"",
|
|
15
|
+
"lint": "eslint --fix --ext ts,tsx,js,jsx src/",
|
|
16
|
+
"test": "jest --passWithNoTests",
|
|
17
|
+
"prepack": "npm run lint && npm run test && npm run build"
|
|
18
|
+
},
|
|
19
|
+
"author": "",
|
|
20
|
+
"license": "ISC",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist/**/*",
|
|
23
|
+
"dist_es/**/*"
|
|
24
|
+
],
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"haystack-core": "^2.0.45",
|
|
27
|
+
"haystack-nclient": "^3.0.32",
|
|
28
|
+
"haystack-react": "^3.0.17",
|
|
29
|
+
"haystack-units": "^1.0.22",
|
|
30
|
+
"react": "^18.2.0",
|
|
31
|
+
"react-dom": "^18.2.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/jest": "^27.4.0",
|
|
35
|
+
"@types/node": "^15.0.2",
|
|
36
|
+
"@types/react": "^18.0.18",
|
|
37
|
+
"@types/react-dom": "^18.0.6",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^5.28.0",
|
|
39
|
+
"@typescript-eslint/parser": "^5.28.0",
|
|
40
|
+
"eslint": "^7.32.0",
|
|
41
|
+
"eslint-config-prettier": "^8.3.0",
|
|
42
|
+
"eslint-plugin-jest": "^26.1.3",
|
|
43
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
44
|
+
"eslint-plugin-react": "^7.29.4",
|
|
45
|
+
"prettier": "^2.6.1",
|
|
46
|
+
"prettier-eslint": "^13.0.0",
|
|
47
|
+
"prettier-eslint-cli": "^5.0.1",
|
|
48
|
+
"rimraf": "^3.0.2",
|
|
49
|
+
"ts-jest": "^28.0.8",
|
|
50
|
+
"typescript": "^4.8.2"
|
|
51
|
+
}
|
|
52
|
+
}
|