@treenity/core 1.0.22 → 1.0.24

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/context.d.ts +14 -67
  3. package/dist/context.mjs +17 -45
  4. package/dist/context.mjs.map +1 -1
  5. package/dist/contexts/node-engine.d.ts +11 -0
  6. package/dist/contexts/node-engine.mjs +7 -0
  7. package/dist/contexts/node-engine.mjs.map +1 -0
  8. package/dist/contexts/object.d.ts +10 -0
  9. package/dist/contexts/object.mjs +15 -0
  10. package/dist/contexts/object.mjs.map +1 -0
  11. package/dist/contexts/proto.d.ts +10 -0
  12. package/dist/contexts/proto.mjs +7 -0
  13. package/dist/contexts/proto.mjs.map +1 -0
  14. package/dist/contexts/react-context.d.ts +18 -0
  15. package/dist/contexts/react-context.mjs +24 -0
  16. package/dist/contexts/react-context.mjs.map +1 -0
  17. package/dist/contexts/service.d.ts +14 -0
  18. package/dist/contexts/service.mjs +7 -0
  19. package/dist/contexts/service.mjs.map +1 -0
  20. package/dist/get-type-cache.d.ts +1 -0
  21. package/dist/get-type-cache.mjs +7 -0
  22. package/dist/get-type-cache.mjs.map +1 -0
  23. package/dist/index.d.ts +10 -1
  24. package/dist/index.mjs +9 -2
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/link/link.d.ts +24 -0
  27. package/dist/link/link.mjs +72 -0
  28. package/dist/link/link.mjs.map +1 -0
  29. package/dist/link/link.test.d.ts +1 -0
  30. package/dist/meta-type.d.ts +36 -0
  31. package/dist/meta-type.mjs +78 -0
  32. package/dist/meta-type.mjs.map +1 -0
  33. package/dist/meta.d.ts +15 -33
  34. package/dist/meta.mjs +15 -5
  35. package/dist/meta.mjs.map +1 -1
  36. package/dist/node/index.d.ts +1 -0
  37. package/dist/node/types.d.ts +31 -0
  38. package/dist/test/context.test.d.ts +1 -0
  39. package/dist/test/proxy-chain.test.d.ts +1 -0
  40. package/dist/types.d.ts +13 -0
  41. package/dist/types.mjs +16 -0
  42. package/dist/types.mjs.map +1 -0
  43. package/package.json +8 -9
  44. package/dist/contexts/json-schema/types.d.ts +0 -3
  45. package/dist/stats.html +0 -4842
  46. package/jest.config.mjs +0 -1
  47. package/jest.config.ts +0 -29
  48. package/rollup.config.mjs +0 -7
@@ -0,0 +1,78 @@
1
+ import { getFileFromStack } from '@treenity/js-shared/utils';
2
+ import { getTypeName } from './meta.mjs';
3
+
4
+ function makeTypeId(type, context) {
5
+ return context ? `${context}:${type}` : type;
6
+ }
7
+ class MetaTypeImpl {
8
+ $type;
9
+ $context;
10
+ $item;
11
+ $loc = 'unknown';
12
+ constructor(type, context) {
13
+ this.$type = type;
14
+ this.$context = context;
15
+ }
16
+ get $id() {
17
+ return makeTypeId(this.$type, this.$context);
18
+ }
19
+ get server() {
20
+ return this.$context === 'server' ? this : this.inContext('server');
21
+ }
22
+ get client() {
23
+ return this.$context === 'client' ? this : this.inContext('client');
24
+ }
25
+ get empty() {
26
+ return !this.$context ? this : this.inContext('');
27
+ }
28
+ inContext(context) {
29
+ return metaType(this, context);
30
+ }
31
+ toString() {
32
+ return `[${this.$id}]`;
33
+ }
34
+ isEqual(other, context) {
35
+ // if context boolean – it indicates if we should count context while comparison
36
+ if (typeof context === 'boolean') {
37
+ other = metaType(other);
38
+ return this.$type === other.$type && (!context || this.$context === other.$context);
39
+ }
40
+ other = metaType(other, context);
41
+ return this.$type === other.$type && this.$context === other.$context;
42
+ }
43
+ }
44
+ function pathToString(path) {
45
+ return typeof path === 'string' ? path : path.toString();
46
+ }
47
+ function metaType(type, subContext) {
48
+ subContext ??= typeof type === 'string' ? '' : type.$context;
49
+ type = getTypeName(type);
50
+ const metaType = _metaTypes[makeTypeId(type, subContext)];
51
+ if (metaType)
52
+ return metaType;
53
+ const newType = new MetaTypeImpl(type, subContext);
54
+ newType.$loc = getFileFromStack(3);
55
+ _metaTypes[makeTypeId(type, subContext)] = Object.freeze(newType);
56
+ return newType;
57
+ }
58
+ /**
59
+ * Any type equals to any other type and has no context
60
+ */
61
+ class AntTypeImpl extends MetaTypeImpl {
62
+ constructor() {
63
+ super('any', '');
64
+ }
65
+ isEqual(other, context) {
66
+ return true;
67
+ }
68
+ inContext(context) {
69
+ return this;
70
+ }
71
+ }
72
+ const _metaTypes = {
73
+ any: new AntTypeImpl(),
74
+ };
75
+ const AnyType = metaType('any');
76
+
77
+ export { AntTypeImpl, AnyType, MetaTypeImpl, makeTypeId, metaType, pathToString };
78
+ //# sourceMappingURL=meta-type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-type.mjs","sources":["../src/meta-type.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/meta.d.ts CHANGED
@@ -1,39 +1,21 @@
1
- export interface IMeta {
1
+ import { Raw } from '@treenity/js-shared/utils';
2
+ import { MetaName } from './meta-type';
3
+ export interface WithId {
2
4
  $id: string;
3
- $name: string;
4
- $anchor?: string;
5
+ }
6
+ export interface Typed {
5
7
  $type: string;
8
+ }
9
+ export interface MetaRaw extends Typed, WithId {
10
+ $name?: string;
11
+ $anchor?: string;
6
12
  $perm?: MetaPermission;
7
13
  $tg?: string[];
8
14
  }
9
- export type Meta<T = {}> = IMeta & T;
15
+ export type Meta<T = any> = T & MetaRaw;
10
16
  export type MetaPermission = Record<string, Array<string>>;
11
- export interface NodeRef {
12
- ref: string;
13
- url: string;
14
- }
15
- export interface NodeLink {
16
- p: string;
17
- v: string;
18
- }
19
- export interface INode {
20
- $parid: string;
21
- /**
22
- * if ref exists in $refs, then field value will be replaced with value pointed by NodeRef.url
23
- */
24
- $refs: NodeRef[];
25
- path: string;
26
- links?: NodeLink[];
27
- defaultMeta?: string;
28
- title: string;
29
- metas: {
30
- [name: string]: Meta;
31
- };
32
- }
33
- export type Node = Meta<INode>;
34
- export type MetaType_<T> = {
35
- readonly $type: string;
36
- readonly $item?: T;
37
- };
38
- export type MetaType<T> = MetaType_<T>;
39
- export declare function metaType<T>(type: string, item?: Partial<T>): MetaType<T>;
17
+ export declare const MetaSymbolType: unique symbol;
18
+ export declare function getMeta<T>(entity: T): Meta<T>;
19
+ export declare function getMetaRaw<T>(entity: T): Raw<T>;
20
+ export declare function serializeMeta(meta: any): Record<string, any>;
21
+ export declare function getTypeName(metaName: MetaName<any>): string;
package/dist/meta.mjs CHANGED
@@ -1,9 +1,19 @@
1
- function toString() {
2
- return `[${this.$type}]`;
1
+ import { getSymbolField } from '@treenity/js-shared/utils';
2
+
3
+ //& NodeCallSignature;
4
+ const MetaSymbolType = Symbol.for('$meta');
5
+ function getMeta(entity) {
6
+ return getSymbolField(entity, MetaSymbolType);
7
+ }
8
+ function getMetaRaw(entity) {
9
+ return getSymbolField(entity, MetaSymbolType).$raw;
10
+ }
11
+ function serializeMeta(meta) {
12
+ return typeof meta.toJSON === 'function' ? meta.toJSON() : JSON.parse(JSON.stringify(meta));
3
13
  }
4
- function metaType(type, item) {
5
- return { $type: type, $item: item, toString };
14
+ function getTypeName(metaName) {
15
+ return typeof metaName === 'string' ? metaName : metaName.$type;
6
16
  }
7
17
 
8
- export { metaType };
18
+ export { MetaSymbolType, getMeta, getMetaRaw, getTypeName, serializeMeta };
9
19
  //# sourceMappingURL=meta.mjs.map
package/dist/meta.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"meta.mjs","sources":["../src/meta.ts"],"sourcesContent":[null],"names":[],"mappings":"AA6CA,SAAS,QAAQ,GAAA;AACf,IAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AAC3B,CAAC;AAEe,SAAA,QAAQ,CAAI,IAAY,EAAE,IAAiB,EAAA;IACzD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAA0B,CAAC;AACxE;;;;"}
1
+ {"version":3,"file":"meta.mjs","sources":["../src/meta.ts"],"sourcesContent":[null],"names":[],"mappings":";;AA0BA;AAEa,MAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;AAE5C,SAAU,OAAO,CAAI,MAAS,EAAA;AAClC,IAAA,OAAO,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;AAEK,SAAU,UAAU,CAAI,MAAS,EAAA;IACrC,OAAQ,cAAc,CAAC,MAAM,EAAE,cAAc,CAAS,CAAC,IAAc,CAAC;AACxE,CAAC;AAEK,SAAU,aAAa,CAAC,IAAS,EAAA;IACrC,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,CAAC;AAEK,SAAU,WAAW,CAAC,QAAuB,EAAA;AACjD,IAAA,OAAO,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;AAClE;;;;"}
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,31 @@
1
+ import { ProxyChain, Raw } from '@treenity/js-shared/utils';
2
+ import { Meta, MetaRaw } from '../meta';
3
+ import { MetaName, MetaPath } from '../meta-type';
4
+ export interface NodeRef {
5
+ ref: string;
6
+ url: string;
7
+ }
8
+ export interface NodeData {
9
+ /**
10
+ * if ref exists in $refs, then field value will be replaced with value pointed by NodeRef.url
11
+ */
12
+ /**
13
+ * @deprecated
14
+ */
15
+ path: string;
16
+ url: string;
17
+ default?: string;
18
+ refs: NodeRef[];
19
+ metas: {
20
+ [name: string]: MetaRaw;
21
+ };
22
+ }
23
+ export type NodeRaw = Meta<NodeData>;
24
+ export interface Node extends NodeData {
25
+ allRaw(): MetaRaw[];
26
+ raw<T>(type: MetaName<T>, path?: MetaPath): T | undefined;
27
+ get<T>(type: MetaName<T>, path?: MetaPath): Promise<T>;
28
+ $$<T>(type: MetaName<T>, path?: MetaPath): ProxyChain<T>;
29
+ add<T>(type: MetaName<T>, meta: Raw<T>, name?: string): Promise<T>;
30
+ remove(meta: string | any): Promise<boolean>;
31
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { NodeEngineTypeContext } from './contexts/node-engine';
2
+ import { ObjectTypeContext } from './contexts/object';
3
+ import { ProtoTypeContext } from './contexts/proto';
4
+ import { ReactTypeContext } from './contexts/react-context';
5
+ import { ServiceTypeContext } from './contexts/service';
6
+ export interface ContextTypes {
7
+ react: ReactTypeContext;
8
+ jsSrv: ServiceTypeContext;
9
+ proto: ProtoTypeContext;
10
+ noflo: NodeEngineTypeContext;
11
+ entity: ObjectTypeContext;
12
+ }
13
+ export declare const types: ContextTypes;
package/dist/types.mjs ADDED
@@ -0,0 +1,16 @@
1
+ import { NodeEngineTypeContextImpl } from './contexts/node-engine.mjs';
2
+ import { ObjectTypeContextImpl } from './contexts/object.mjs';
3
+ import { ProtoTypeContextImpl } from './contexts/proto.mjs';
4
+ import { ReactTypeContextImpl } from './contexts/react-context.mjs';
5
+ import { ServiceTypeContextImpl } from './contexts/service.mjs';
6
+ import { getTypeCache } from './get-type-cache.mjs';
7
+
8
+ const types = getTypeCache();
9
+ new ReactTypeContextImpl('react');
10
+ new ProtoTypeContextImpl('proto');
11
+ new ServiceTypeContextImpl('jsSrv');
12
+ new NodeEngineTypeContextImpl('noflo');
13
+ new ObjectTypeContextImpl('entity');
14
+
15
+ export { types };
16
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAea,MAAA,KAAK,GAAiB,YAAY,GAAmB;AAElE,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,qBAAqB,CAAC,QAAQ,CAAC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treenity/core",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "description": "treenity core",
5
5
  "author": "Treenity",
6
6
  "license": "ISC",
@@ -14,8 +14,9 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@treenity/js-shared": "1.0.20",
18
- "json-schema-to-ts": "3.0.0",
17
+ "@treenity/js-shared": "1.0.22",
18
+ "json-schema": "^0.4.0",
19
+ "json-schema-to-ts": "3.1.0",
19
20
  "synchronous-promise": "2.0.17",
20
21
  "tslib": "2.6.3"
21
22
  },
@@ -25,18 +26,16 @@
25
26
  "devDependencies": {
26
27
  "@testing-library/dom": "^8.17.1",
27
28
  "@testing-library/jest-dom": "6.4.5",
28
- "@testing-library/preact": "3.2.3",
29
- "@treenity/build-utils": "1.1.12",
30
- "@treenity/tsconfig": "1.0.9",
29
+ "@treenity/build-utils": "1.1.15",
30
+ "@treenity/tsconfig": "1.0.10",
31
31
  "@types/jest": "29.5.12",
32
+ "@types/json-schema": "^7.0.15",
32
33
  "@types/node": "20.11.16",
33
34
  "@types/prop-types": "^15.7.5",
34
35
  "@types/react": "18.2.51",
35
36
  "ajv": "^8.12.0",
36
37
  "jest": "29.7.0",
37
38
  "react": "18.2.0",
38
- "rollup": "4.9.6",
39
- "ts-jest": "29.1.4",
40
39
  "typescript": "5.4.5"
41
40
  },
42
41
  "scripts": {
@@ -44,7 +43,7 @@
44
43
  "watch": "rollup -c -w",
45
44
  "clean": "treenity-clean",
46
45
  "typecheck": "tsc",
47
- "--test": "jest --no-cache --detectOpenHandles --runInBand --forceExit",
46
+ "test": "jest --no-cache --detectOpenHandles --runInBand --forceExit",
48
47
  "--doc": "typedoc --plugin typedoc-plugin-markdown"
49
48
  }
50
49
  }
@@ -1,3 +0,0 @@
1
- import { SomeJSONSchema } from 'ajv/lib/types/json-schema';
2
- import { JSONSchema } from 'json-schema-to-ts';
3
- export type JsonObjectSchema = SomeJSONSchema & JSONSchema;