@rootintf/protocol-subverseinfo 1.0.9-api.2 → 2.0.1-api.4

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.
@@ -0,0 +1,70 @@
1
+ export function definitions_SubverseInfo(data: any, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }?: {
2
+ instancePath?: string;
3
+ rootData?: any;
4
+ dynamicAnchors?: {};
5
+ }): boolean;
6
+ export namespace definitions_SubverseInfo {
7
+ namespace evaluated {
8
+ let dynamicProps: boolean;
9
+ let dynamicItems: boolean;
10
+ }
11
+ }
12
+ export function schema_SubverseInfo_query(data: any, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }?: {
13
+ instancePath?: string;
14
+ rootData?: any;
15
+ dynamicAnchors?: {};
16
+ }): boolean;
17
+ export namespace schema_SubverseInfo_query {
18
+ export namespace evaluated_1 {
19
+ export namespace props {
20
+ let query: boolean;
21
+ let subverse_info: boolean;
22
+ }
23
+ let dynamicProps_1: boolean;
24
+ export { dynamicProps_1 as dynamicProps };
25
+ let dynamicItems_1: boolean;
26
+ export { dynamicItems_1 as dynamicItems };
27
+ }
28
+ export { evaluated_1 as evaluated };
29
+ }
30
+ export function schema_SubverseInfo_subverse(data: any, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }?: {
31
+ instancePath?: string;
32
+ rootData?: any;
33
+ dynamicAnchors?: {};
34
+ }): boolean;
35
+ export namespace schema_SubverseInfo_subverse {
36
+ export namespace evaluated_2 {
37
+ export namespace props_1 {
38
+ export let expanse: boolean;
39
+ let subverse_info_1: boolean;
40
+ export { subverse_info_1 as subverse_info };
41
+ }
42
+ export { props_1 as props };
43
+ let dynamicProps_2: boolean;
44
+ export { dynamicProps_2 as dynamicProps };
45
+ let dynamicItems_2: boolean;
46
+ export { dynamicItems_2 as dynamicItems };
47
+ }
48
+ export { evaluated_2 as evaluated };
49
+ }
50
+ export function schema_SubverseInfo_instances(data: any, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }?: {
51
+ instancePath?: string;
52
+ rootData?: any;
53
+ dynamicAnchors?: {};
54
+ }): boolean;
55
+ export namespace schema_SubverseInfo_instances {
56
+ export namespace evaluated_3 {
57
+ export namespace props_2 {
58
+ let expanse_1: boolean;
59
+ export { expanse_1 as expanse };
60
+ let subverse_info_2: boolean;
61
+ export { subverse_info_2 as subverse_info };
62
+ }
63
+ export { props_2 as props };
64
+ let dynamicProps_3: boolean;
65
+ export { dynamicProps_3 as dynamicProps };
66
+ let dynamicItems_3: boolean;
67
+ export { dynamicItems_3 as dynamicItems };
68
+ }
69
+ export { evaluated_3 as evaluated };
70
+ }
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@rootintf/protocol-subverseinfo",
3
- "version": "1.0.9-api.2",
3
+ "version": "2.0.1-api.4",
4
4
  "description": "",
5
5
  "main": "dist/subverseinfo.cjs.js",
6
+ "types": "dist/index.d.ts",
6
7
  "browser": "dist/subverseinfo.es.mjs",
7
8
  "scripts": {
8
9
  "build": "node src/ajv-gen-validate.cjs && rollup --config",
@@ -24,7 +25,7 @@
24
25
  "homepage": "https://gitlab.com/interface-x/npm-protocol-subverseinfo.git#readme",
25
26
  "dependencies": {
26
27
  "@knev/bitlogr": "^2.0.11",
27
- "@rootintf/json-msg": "^1.1.5",
28
+ "@rootintf/json-msg": "^2.0.6",
28
29
  "ajv": "^8.17.1",
29
30
  "uuid": "^11.0.3"
30
31
  },
@@ -32,9 +33,14 @@
32
33
  "@rollup/plugin-commonjs": "^28.0.1",
33
34
  "@rollup/plugin-json": "^6.1.0",
34
35
  "@rollup/plugin-node-resolve": "^15.3.0",
36
+ "@rollup/plugin-typescript": "^12.3.0",
37
+ "@types/ajv": "^0.0.5",
38
+ "@types/node": "^24.10.1",
35
39
  "ajv-cli": "^5.0.0",
36
40
  "del-cli": "^6.0.0",
37
41
  "jasmine": "^5.5.0",
38
- "rollup": "^4.28.1"
42
+ "rollup": "^4.28.1",
43
+ "tslib": "^2.8.1",
44
+ "typescript": "^5.9.3"
39
45
  }
40
46
  }
package/rollup.config.mjs CHANGED
@@ -2,23 +2,34 @@
2
2
  import resolve from '@rollup/plugin-node-resolve';
3
3
  import commonjs from '@rollup/plugin-commonjs';
4
4
  import json from '@rollup/plugin-json';
5
+ import typescript from '@rollup/plugin-typescript';
5
6
 
6
7
  export default [
7
8
  {
8
- input: 'src/subverseinfo.mjs',
9
+ input: 'src/subverseinfo.ts',
9
10
  output: {
10
11
  file: 'dist/subverseinfo.es.mjs',
11
12
  format: 'es'
12
13
  },
13
- plugins: [resolve(), commonjs(), json()]
14
+ plugins: [
15
+ resolve(),
16
+ commonjs(),
17
+ json(),
18
+ typescript({ tsconfig: './tsconfig.json' })
19
+ ]
14
20
  },
15
21
  {
16
- input: 'src/subverseinfo.mjs',
22
+ input: 'src/subverseinfo.ts',
17
23
  output: {
18
24
  file: 'dist/subverseinfo.cjs.js',
19
25
  format: 'cjs'
20
26
  },
21
- plugins: [resolve(), commonjs(), json()]
27
+ plugins: [
28
+ resolve(),
29
+ commonjs(),
30
+ json(),
31
+ typescript({ tsconfig: './tsconfig.json' })
32
+ ]
22
33
  }
23
34
 
24
35
  ];
@@ -0,0 +1,164 @@
1
+ {
2
+ "$id" : "https://root-interface.se/protocols/SubverseInfo",
3
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
4
+ "schemas": {
5
+ "https://root-interface.se/protocols/SubverseInfo/definitions" : {
6
+ "$id" : "https://root-interface.se/protocols/SubverseInfo/definitions",
7
+ "$schema" : "https://json-schema.org/draft/2019-09/schema",
8
+ "definitions" : {
9
+ "_v" : {
10
+ "const": "4"
11
+ },
12
+ "unique-id" : {
13
+ "type" : "object",
14
+ "required": [ "uri", "name" ],
15
+ "properties": {
16
+ "uri": { "type" : "string" },
17
+ "name": { "type" : "string" }
18
+ }
19
+ },
20
+ "info" : {
21
+ "type" : "object"
22
+ },
23
+ "hyperport" : {
24
+ "type" : "object",
25
+ "required" : [ "uri", "port" ],
26
+ "properties" : {
27
+ "uri" : { "type" : "string" }
28
+ }
29
+ },
30
+ "verse-header" : {
31
+ "type" : "object",
32
+ "allOf": [{ "$ref": "definitions#/definitions/unique-id" }],
33
+ "required": [ ],
34
+ "properties": {
35
+ "favicon" : { "type" : "string" },
36
+ "hyperport" : { "$ref": "definitions#/definitions/hyperport" },
37
+ "info" : { "$ref": "definitions#/definitions/info" }
38
+ }
39
+ },
40
+ "instances" : {
41
+ "type" : "array",
42
+ "items": {
43
+ "type" : "object",
44
+ "allOf": [{ "$ref": "definitions#/definitions/verse-header" }],
45
+ "properties": {
46
+ },
47
+ "unevaluatedProperties": false
48
+ }
49
+ },
50
+ "platforms" : {
51
+ "type": "array",
52
+ "items": {
53
+ "type" : "object",
54
+ "required": [ "id" ],
55
+ "properties": {
56
+ "id": { "type": "string" },
57
+ "archs": {
58
+ "type": "array",
59
+ "items": { "type" : "string" }
60
+ },
61
+ "agents": {
62
+ "type": "array",
63
+ "items": { "type" : "string" }
64
+ }
65
+ }
66
+ }
67
+ },
68
+ "protocols" : {
69
+ "type" : "array",
70
+ "items" : {
71
+ "type" : "object",
72
+ "required": [ "id", "attr" ],
73
+ "properties" : {
74
+ "id": { "type" : "string" },
75
+ "name": { "type" : "string" },
76
+ "version" : { "type" : "string" },
77
+ "attr": { "type" : "string" },
78
+ "url": { "type" : "string" }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ },
84
+ "https://root-interface.se/protocols/SubverseInfo/query" : {
85
+ "$id": "https://root-interface.se/protocols/SubverseInfo/query",
86
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
87
+ "type" : "object",
88
+ "required" : [ "query", "subverse_info" ],
89
+ "properties" : {
90
+ "query" : {
91
+ "type" : "object",
92
+ "required": [ "name", "graphql", "ttl_msec" ],
93
+ "properties": {
94
+ "name" : {
95
+ "type" : "string"
96
+ },
97
+ "graphql" : {
98
+ "type" : "string"
99
+ },
100
+ "ttl_msec" : {
101
+ "type" : "integer"
102
+ },
103
+ "unevaluatedProperties": false
104
+ }
105
+ },
106
+ "subverse_info": { "$ref": "definitions#/definitions/_v" }
107
+ }
108
+ },
109
+ "https://root-interface.se/protocols/SubverseInfo/subverse" : {
110
+ "$id": "https://root-interface.se/protocols/SubverseInfo/subverse",
111
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
112
+ "type" : "object",
113
+ "required" : [ "expanse", "subverse_info" ],
114
+ "properties" : {
115
+ "expanse" : {
116
+ "type" : "object",
117
+ "required" : [ "subverse", "protocols" ],
118
+ "not": {
119
+ "required": [ "instances" ]
120
+ },
121
+ "properties" : {
122
+ "subverse" : {
123
+ "type" : "object",
124
+ "allOf": [{ "$ref": "definitions#/definitions/verse-header" }],
125
+ "required" : [ ],
126
+ "properties" : {
127
+ "map-uri" : { "type" : "string" },
128
+ "instances" : { "$ref": "definitions#/definitions/instances" }
129
+ },
130
+ "unevaluatedProperties": false
131
+ },
132
+ "platforms" : { "$ref": "definitions#/definitions/platforms" },
133
+ "protocols": { "$ref": "definitions#/definitions/protocols" }
134
+ }
135
+ },
136
+ "subverse_info": { "$ref": "definitions#/definitions/_v" }
137
+ }
138
+ },
139
+ "https://root-interface.se/protocols/SubverseInfo/instances" : {
140
+ "$id": "https://root-interface.se/protocols/SubverseInfo/instances",
141
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
142
+ "type" : "object",
143
+ "required" : [ "expanse", "subverse_info" ],
144
+ "properties" : {
145
+ "expanse" : {
146
+ "type" : "object",
147
+ "required" : ["instances"],
148
+ "properties" : {
149
+ "instances" : { "$ref": "definitions#/definitions/instances" },
150
+ "subverse" : {
151
+ "type" : "object",
152
+ "allOf": [{ "$ref": "definitions#/definitions/unique-id" }],
153
+ "unevaluatedProperties": false
154
+ },
155
+ "platforms" : { "$ref": "definitions#/definitions/platforms" },
156
+ "protocols": { "$ref": "definitions#/definitions/protocols" }
157
+
158
+ }
159
+ },
160
+ "subverse_info": { "$ref": "definitions#/definitions/_v" }
161
+ }
162
+ }
163
+ }
164
+ }
@@ -1,10 +1,4 @@
1
1
 
2
- var json_definitions_SubverseInfo_ = require('../schema/definitions_SubverseInfo.json');
3
-
4
- var json_schema_SubverseInfo_query_= require('../schema/schema_SubverseInfo_query.json');
5
- var json_schema_SubverseInfo_expanse_= require('../schema/schema_SubverseInfo_expanse.json');
6
- var json_schema_expanse_instances_= require('../schema/schema_expanse_instances.json');
7
-
8
2
  // https://ajv.js.org/standalone.html
9
3
  // https://ajv.js.org/guide/schema-language.html
10
4
 
@@ -13,6 +7,11 @@ const path = require("path")
13
7
  const Ajv2019 = require("ajv/dist/2019");
14
8
  const standaloneCode = require("ajv/dist/standalone").default
15
9
 
10
+ // var json_definitions_SubverseInfo_ = require('../schema/definitions_SubverseInfo.json');
11
+ // var json_schema_SubverseInfo_query_= require('../schema/schema_SubverseInfo_query.json');
12
+ // var json_schema_SubverseInfo_expanse_= require('../schema/schema_SubverseInfo_expanse.json');
13
+ // var json_schema_expanse_instances_= require('../schema/schema_expanse_instances.json');
14
+
16
15
  // ajv draft07, draft/2019-09 requires id URIs
17
16
  // For ESM, the export name needs to be a valid export name, it can not be `export const #/definitions/Foo = ...;` so we
18
17
  // need to provide a mapping between a valid name and the $id field. Below will generate
@@ -20,23 +19,28 @@ const standaloneCode = require("ajv/dist/standalone").default
20
19
  // This mapping would not have been needed if the `$ids` was just `Bar` and `Foo` instead of `#/definitions/Foo`
21
20
  // and `#/definitions/Bar` respectfully
22
21
  const ajv = new Ajv2019({
23
- schemas: [
24
- json_definitions_SubverseInfo_,
25
- json_schema_SubverseInfo_query_,
26
- json_schema_SubverseInfo_expanse_,
27
- // json_schema_expanse_instances_,
28
- ],
22
+ // schemas: [
23
+ // json_definitions_SubverseInfo_,
24
+ // json_schema_SubverseInfo_query_,
25
+ // json_schema_SubverseInfo_expanse_,
26
+ // // json_schema_expanse_instances_,
27
+ // ],
29
28
  code: {
30
29
  source: true,
31
30
  esm: true
32
31
  }
33
32
  });
34
33
 
34
+ var json_schema_SubverseInfo_= require('../schema/schema_SubverseInfo.json');
35
+ Object.values(json_schema_SubverseInfo_.schemas).forEach(schema => {
36
+ ajv.addSchema(schema);
37
+ });
38
+
35
39
  let moduleCode = standaloneCode(ajv, {
36
- "definitions_SubverseInfo": "https://root-interface.se/protocols/SubverseInfo/definitions_SubverseInfo",
37
- "schema_SubverseInfo_query": "https://root-interface.se/protocols/SubverseInfo/schema_SubverseInfo_query",
38
- "schema_SubverseInfo_expanse": "https://root-interface.se/protocols/SubverseInfo/schema_SubverseInfo_expanse",
39
- // "schema_expanse_instances": "https://root-interface.se/protocols/SubverseInfo/schema_expanse_instances",
40
+ "definitions_SubverseInfo": "https://root-interface.se/protocols/SubverseInfo/definitions",
41
+ "schema_SubverseInfo_query": "https://root-interface.se/protocols/SubverseInfo/query",
42
+ "schema_SubverseInfo_subverse": "https://root-interface.se/protocols/SubverseInfo/subverse",
43
+ "schema_SubverseInfo_instances": "https://root-interface.se/protocols/SubverseInfo/instances"
40
44
  })
41
45
 
42
46
  // Now you can write the module code to file
@@ -0,0 +1 @@
1
+ declare module '@knev/bitlogr';
@@ -0,0 +1,123 @@
1
+
2
+ import {
3
+ definitions_SubverseInfo as definitions_SubverseInfo_,
4
+ schema_SubverseInfo_query as schema_SubverseInfo_query_,
5
+ schema_SubverseInfo_subverse as schema_SubverseInfo_subverse_,
6
+ schema_SubverseInfo_instances as schema_SubverseInfo_instances_
7
+ } from './validate-esm.mjs';
8
+
9
+ import { LOGR, l_LL } from '@knev/bitlogr';
10
+ import { JSON_Msg, JSON_MsgEffect, l as l_json_msg_ } from '@rootintf/json-msg';
11
+
12
+ let LOGR_= LOGR.get_instance();
13
+ const log_ = LOGR_.log;
14
+
15
+ Object.assign(l_json_msg_, l_LL(l_json_msg_, 2)); // VALIDATION : 4
16
+
17
+ const l_= {
18
+ VALIDATION : 0b1 << 2, //4
19
+ }
20
+ LOGR_.labels= l_;
21
+
22
+ LOGR_.toggled= {
23
+ // VALIDATION : true
24
+ }
25
+
26
+ const kstr_VERSION= "4";
27
+ // windows: $ certutil -hashfile schema/schema_SubverseInfo.json SHA256
28
+ // TODO: needs to be a canonical text file: line endings, encoding, whitespace, sorting, redundant data, comments
29
+ const kstr_SubverseInfo_uri= "SubverseInfo:SHA256:f1fb09af477be5fbb7d014ff738fa62637680dacf0ca85ec76d2891518d6efaa";
30
+
31
+ // TODO: use RFC3339 "timestamp"? https://ajv.js.org/json-type-definition.html
32
+
33
+ // const regex_IOI= new RegExp('\\bquery\\s*\\{\\s*IOI\\s*\\(\\s*pkg\\s*:\\s*"([^"]*)"\\s*\\)\\s*\\{.*heartbeat\\s*\\}\\s*\\}');
34
+
35
+ var JSON_MsgSubverseInfo_query = (function() {
36
+ return {
37
+ merge : function(json) {
38
+ let json_msg= JSON_Msg.merge(json);
39
+ json_msg["subverse_info"]= kstr_VERSION;
40
+
41
+ return json_msg;
42
+ },
43
+ validate : function(json, _pkg= {}) {
44
+ // if (! JSON_Msg.validate(json))
45
+ // return false;
46
+
47
+ if (! schema_SubverseInfo_query_(json)) {
48
+ log_(l_.VALIDATION, () => ['schema_SubverseInfo_query_: validate: ', (schema_SubverseInfo_query_ as any).errors])
49
+ return false;
50
+ }
51
+
52
+ // const str_graphql = json["discovery"]["graphql"];
53
+
54
+ // const regex_match= str_graphql.match(regex_IOI);
55
+ // if (regex_match === null || regex_match.length !== 2)
56
+ // return false;
57
+
58
+ // if (pkg !== regex_match[1])
59
+ // return false;
60
+
61
+ return true;
62
+ }
63
+ }
64
+ })();
65
+
66
+ var JSON_MsgSubverseInfo_subverse = (function() {
67
+ return {
68
+ create_with_cause_merge : function(msg_cause, json) {
69
+ let json_msgeffect= JSON_MsgEffect.create_with_cause_merge(msg_cause, json);
70
+ json_msgeffect["subverse_info"]= kstr_VERSION;
71
+
72
+ return json_msgeffect;
73
+ },
74
+ validate : function(json_msg) {
75
+ // if (! JSON_Msg_msg.validate(json))
76
+ // return false;
77
+
78
+ if (json_msg._cause)
79
+ if (! JSON_MsgSubverseInfo_query.validate(json_msg._cause))
80
+ return false;
81
+
82
+ if (! schema_SubverseInfo_subverse_(json_msg)) {
83
+ log_(l_.VALIDATION, () => ['JSON_SubverseInfo_expanse: validate: ', (schema_SubverseInfo_subverse_ as any).errors])
84
+ return false;
85
+ }
86
+ return true;
87
+ }
88
+ }
89
+ })();
90
+
91
+ var JSON_MsgSubverseInfo_instances = (function() {
92
+ return {
93
+ create_with_cause_merge : function(msg_cause, json) {
94
+ let json_msgeffect= JSON_MsgEffect.create_with_cause_merge(msg_cause, json);
95
+ json_msgeffect["subverse_info"]= kstr_VERSION;
96
+
97
+ return json_msgeffect;
98
+ },
99
+ validate : function(json_msg) {
100
+ // if (! JSON_Msg_msg.validate(json))
101
+ // return false;
102
+
103
+ if (json_msg._cause)
104
+ if (! JSON_MsgSubverseInfo_query.validate(json_msg._cause))
105
+ return false;
106
+
107
+ if (! schema_SubverseInfo_instances_(json_msg)) {
108
+ log_(l_.VALIDATION, () => ['JSON_SubverseInfo_instances: validate: ', (schema_SubverseInfo_instances_ as any).errors])
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ }
114
+ })();
115
+
116
+ //-------------------------------------------------------------------------------------------------
117
+
118
+ export {
119
+ JSON_MsgSubverseInfo_query,
120
+ JSON_MsgSubverseInfo_subverse,
121
+ JSON_MsgSubverseInfo_instances,
122
+ l_ as l
123
+ }