@metapages/metapage 1.8.25 → 1.8.27
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/README.md +13 -12
- package/dist/index.js +859 -841
- package/dist/index.js.map +1 -1
- package/dist/metapage/Constants.d.ts.map +1 -1
- package/dist/metapage/Metaframe.d.ts +8 -8
- package/dist/metapage/Metaframe.d.ts.map +1 -1
- package/dist/metapage/Metapage.d.ts +5 -5
- package/dist/metapage/Metapage.d.ts.map +1 -1
- package/dist/metapage/MetapageIFrameRpcClient.d.ts +8 -8
- package/dist/metapage/MetapageIFrameRpcClient.d.ts.map +1 -1
- package/dist/metapage/MetapageTools.d.ts +4 -4
- package/dist/metapage/MetapageTools.d.ts.map +1 -1
- package/dist/metapage/Shared.d.ts +4 -4
- package/dist/metapage/core.d.ts +2 -1
- package/dist/metapage/core.d.ts.map +1 -1
- package/dist/metapage/data.d.ts.map +1 -1
- package/dist/metapage/errors/MissingMetaframeJson.d.ts.map +1 -1
- package/dist/metapage/errors/RootMetapageError.d.ts.map +1 -1
- package/dist/metapage/jsonrpc.d.ts +4 -4
- package/dist/metapage/jsonrpc.d.ts.map +1 -1
- package/dist/metapage/metapageRenderer.d.ts +16 -2
- package/dist/metapage/metapageRenderer.d.ts.map +1 -1
- package/dist/metapage/v0_1_0/all.d.ts +1 -1
- package/dist/metapage/v0_1_0/all.d.ts.map +1 -1
- package/dist/metapage/v0_2/all.d.ts +1 -1
- package/dist/metapage/v0_2/all.d.ts.map +1 -1
- package/dist/metapage/v0_3/JsonRpcMethods.d.ts +3 -3
- package/dist/metapage/v0_3/JsonRpcMethods.d.ts.map +1 -1
- package/dist/metapage/v0_3/all.d.ts +2 -2
- package/dist/metapage/v0_3/all.d.ts.map +1 -1
- package/dist/metapage/v0_4/metaframe.d.ts +3 -3
- package/dist/metapage/v0_4/metaframe.d.ts.map +1 -1
- package/dist/metapage/v0_4/metapage.d.ts +3 -3
- package/dist/metapage/v0_4/metapage.d.ts.map +1 -1
- package/dist/metapage/v1/metaframe.d.ts +3 -3
- package/dist/metapage/v1/metapage.d.ts +3 -3
- package/dist/metapage/v2/metaframe.d.ts +3 -3
- package/dist/metapage/v2/metapage.d.ts +3 -3
- package/dist/metapage/versions.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/metapage/Constants.ts +5 -6
- package/src/metapage/Metaframe.ts +54 -62
- package/src/metapage/Metapage.ts +41 -41
- package/src/metapage/MetapageIFrameRpcClient.ts +20 -20
- package/src/metapage/MetapageTools.ts +15 -18
- package/src/metapage/README.md +5 -5
- package/src/metapage/Shared.ts +5 -5
- package/src/metapage/conversions-metaframe.ts +35 -35
- package/src/metapage/conversions-metapage.ts +25 -25
- package/src/metapage/core.ts +2 -1
- package/src/metapage/data.ts +38 -48
- package/src/metapage/errors/MissingMetaframeJson.ts +11 -12
- package/src/metapage/errors/RootMetapageError.ts +11 -12
- package/src/metapage/jsonrpc.ts +6 -12
- package/src/metapage/metapageRenderer.ts +110 -66
- package/src/metapage/metapageRendererExample.ts +1 -1
- package/src/metapage/util.ts +6 -6
- package/src/metapage/v0_1_0/all.ts +6 -6
- package/src/metapage/v0_2/all.ts +15 -13
- package/src/metapage/v0_3/JsonRpcMethods.ts +6 -10
- package/src/metapage/v0_3/all.ts +7 -10
- package/src/metapage/v0_4/README.md +1 -0
- package/src/metapage/v0_4/index.ts +0 -1
- package/src/metapage/v0_4/metaframe.ts +3 -6
- package/src/metapage/v0_4/metapage.ts +3 -6
- package/src/metapage/v1/index.ts +0 -1
- package/src/metapage/v1/metaframe.ts +3 -4
- package/src/metapage/v1/metapage.ts +3 -3
- package/src/metapage/v2/index.ts +0 -1
- package/src/metapage/v2/metaframe.ts +3 -4
- package/src/metapage/v2/metapage.ts +3 -3
- package/src/metapage/versions.ts +11 -4
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import { MetapageHashParams, MetapageShared } from "./Shared";
|
|
13
13
|
import { MetaframeDefinitionV2 } from "./v2";
|
|
14
14
|
import { MetaframeInputMap, MetapageInstanceInputs } from "./v0_4";
|
|
15
|
-
import { MetaframeId, MetaframePipeId, MetapageId } from "./core";
|
|
15
|
+
import { Disposer, MetaframeId, MetaframePipeId, MetapageId } from "./core";
|
|
16
16
|
import { convertMetaframeJsonToCurrentVersion } from "./conversions-metaframe";
|
|
17
17
|
import { MetapageEvents } from "./events";
|
|
18
18
|
import {
|
|
@@ -47,10 +47,10 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
47
47
|
_consoleBackgroundColor: string;
|
|
48
48
|
inputs: MetaframeInputMap = {};
|
|
49
49
|
outputs: MetaframeInputMap = {};
|
|
50
|
-
_disposables:
|
|
50
|
+
_disposables: Disposer[] = [];
|
|
51
51
|
_rpcListeners: ((r: JsonRpcRequest<any>) => void)[] = [];
|
|
52
52
|
_loaded: boolean = false;
|
|
53
|
-
_onLoaded:
|
|
53
|
+
_onLoaded: Disposer[] = [];
|
|
54
54
|
_parentId: MetapageId;
|
|
55
55
|
_debug: boolean;
|
|
56
56
|
_sendInputsAfterRegistration: boolean = false;
|
|
@@ -64,7 +64,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
64
64
|
iframeId: MetaframeId,
|
|
65
65
|
parentId: MetapageId,
|
|
66
66
|
consoleBackgroundColor: string,
|
|
67
|
-
debug: boolean = false
|
|
67
|
+
debug: boolean = false,
|
|
68
68
|
) {
|
|
69
69
|
super();
|
|
70
70
|
// Url sanitation
|
|
@@ -121,7 +121,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
121
121
|
this._metapage._definition.metaframes[this.id].allow!;
|
|
122
122
|
if (this._debug) {
|
|
123
123
|
this.log(
|
|
124
|
-
`mf allow=${selfThis._iframe.allow} from this._metapage?._definition
|
|
124
|
+
`mf allow=${selfThis._iframe.allow} from this._metapage?._definition`,
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
} else {
|
|
@@ -132,7 +132,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
132
132
|
urlEncodedDefinition =
|
|
133
133
|
urlEncodedDefinition && urlEncodedDefinition?.version
|
|
134
134
|
? await convertMetaframeJsonToCurrentVersion(
|
|
135
|
-
urlEncodedDefinition
|
|
135
|
+
urlEncodedDefinition,
|
|
136
136
|
)
|
|
137
137
|
: undefined;
|
|
138
138
|
if (!selfThis._iframe) {
|
|
@@ -202,8 +202,8 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
202
202
|
|
|
203
203
|
addListenerReturnDisposer(
|
|
204
204
|
event: JsonRpcMethodsFromParent | MetapageEvents,
|
|
205
|
-
listener: ListenerFn<any[]
|
|
206
|
-
):
|
|
205
|
+
listener: ListenerFn<any[]>,
|
|
206
|
+
): Disposer {
|
|
207
207
|
super.addListener(event, listener);
|
|
208
208
|
const disposer = () => {
|
|
209
209
|
super.removeListener(event, listener);
|
|
@@ -251,7 +251,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
251
251
|
MetapageEvents.Warning,
|
|
252
252
|
`Failed to fetch or convert: ${url}\nError: ${
|
|
253
253
|
(err as Error)?.message ? (err as Error)?.message : err?.toString()
|
|
254
|
-
}
|
|
254
|
+
}`,
|
|
255
255
|
);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
@@ -331,11 +331,11 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
-
public onInputs(f: (m: MetaframeInputMap) => void):
|
|
334
|
+
public onInputs(f: (m: MetaframeInputMap) => void): Disposer {
|
|
335
335
|
return this.addListenerReturnDisposer(MetapageEvents.Inputs, f);
|
|
336
336
|
}
|
|
337
337
|
|
|
338
|
-
public onInput(pipeName: MetaframePipeId, f: (_: any) => void):
|
|
338
|
+
public onInput(pipeName: MetaframePipeId, f: (_: any) => void): Disposer {
|
|
339
339
|
var fWrap = function (inputs: MetaframeInputMap) {
|
|
340
340
|
if (inputs.hasOwnProperty(pipeName)) {
|
|
341
341
|
f(inputs[pipeName]);
|
|
@@ -344,11 +344,11 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
344
344
|
return this.addListenerReturnDisposer(MetapageEvents.Inputs, fWrap);
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
-
public onOutputs(f: (m: MetaframeInputMap) => void):
|
|
347
|
+
public onOutputs(f: (m: MetaframeInputMap) => void): Disposer {
|
|
348
348
|
return this.addListenerReturnDisposer(MetapageEvents.Outputs, f);
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
public onOutput(pipeName: MetaframePipeId, f: (_: any) => void):
|
|
351
|
+
public onOutput(pipeName: MetaframePipeId, f: (_: any) => void): Disposer {
|
|
352
352
|
var fWrap = function (outputs: MetaframeInputMap) {
|
|
353
353
|
if (outputs.hasOwnProperty(pipeName)) {
|
|
354
354
|
f(outputs[pipeName]);
|
|
@@ -409,7 +409,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
409
409
|
};
|
|
410
410
|
this.sendRpcInternal(
|
|
411
411
|
JsonRpcMethodsFromParent.SetupIframeServerResponse,
|
|
412
|
-
response
|
|
412
|
+
response,
|
|
413
413
|
);
|
|
414
414
|
}
|
|
415
415
|
|
|
@@ -490,7 +490,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
490
490
|
MetapageToolsLog(
|
|
491
491
|
`Metapage[${this._parentId}] Metaframe[${this.id}] ${s}`,
|
|
492
492
|
this._color,
|
|
493
|
-
this._consoleBackgroundColor
|
|
493
|
+
this._consoleBackgroundColor,
|
|
494
494
|
);
|
|
495
495
|
}
|
|
496
496
|
|
|
@@ -509,14 +509,14 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
509
509
|
if (this._metapage) {
|
|
510
510
|
this._metapage.error(
|
|
511
511
|
`Cannot send to child iframe messageJSON=${JSON.stringify(
|
|
512
|
-
messageJSON
|
|
513
|
-
).substring(0, 200)}
|
|
512
|
+
messageJSON,
|
|
513
|
+
).substring(0, 200)}`,
|
|
514
514
|
);
|
|
515
515
|
} else {
|
|
516
516
|
console.error(
|
|
517
517
|
`Cannot send to child iframe messageJSON=${JSON.stringify(
|
|
518
|
-
messageJSON
|
|
519
|
-
).substring(0, 200)}
|
|
518
|
+
messageJSON,
|
|
519
|
+
).substring(0, 200)}`,
|
|
520
520
|
);
|
|
521
521
|
}
|
|
522
522
|
}
|
|
@@ -534,7 +534,7 @@ export class MetapageIFrameRpcClient extends EventEmitter<
|
|
|
534
534
|
this._bufferTimeout = window.setInterval(function () {
|
|
535
535
|
if (thing._iframe && thing._iframe.contentWindow) {
|
|
536
536
|
thing._bufferMessages!.forEach((m) =>
|
|
537
|
-
thing._iframe!.contentWindow!.postMessage(m, thing.url)
|
|
537
|
+
thing._iframe!.contentWindow!.postMessage(m, thing.url),
|
|
538
538
|
);
|
|
539
539
|
window.clearInterval(thing._bufferTimeout);
|
|
540
540
|
thing._bufferTimeout = undefined;
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import stringify from
|
|
2
|
-
import { create } from
|
|
3
|
-
import { MetapageHashParams } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from './core.js';
|
|
8
|
-
import {
|
|
9
|
-
MetaframeInputMap,
|
|
10
|
-
} from './v0_4/index.js';
|
|
11
|
-
import { MetapageDefinitionV2 } from './v2/metapage.js';
|
|
1
|
+
import stringify from "fast-json-stable-stringify";
|
|
2
|
+
import { create } from "mutative";
|
|
3
|
+
import { MetapageHashParams } from "./Shared.js";
|
|
4
|
+
import { MetaframeId, MetapageId } from "./core.js";
|
|
5
|
+
import { MetaframeInputMap } from "./v0_4/index.js";
|
|
6
|
+
import { MetapageDefinitionV2 } from "./v2/metapage.js";
|
|
12
7
|
/**
|
|
13
8
|
* Merges new values into the a new object.
|
|
14
9
|
* Does NOT check if there are actually new keys.
|
|
@@ -19,7 +14,7 @@ import { MetapageDefinitionV2 } from './v2/metapage.js';
|
|
|
19
14
|
*/
|
|
20
15
|
export const merge = (
|
|
21
16
|
current: MetaframeInputMap,
|
|
22
|
-
newInputs: MetaframeInputMap
|
|
17
|
+
newInputs: MetaframeInputMap,
|
|
23
18
|
): MetaframeInputMap => {
|
|
24
19
|
if (!newInputs) {
|
|
25
20
|
return current;
|
|
@@ -46,13 +41,13 @@ export const getUrlParam = (key: MetapageHashParams): string | null => {
|
|
|
46
41
|
|
|
47
42
|
export const getUrlParamDebug = (): boolean => {
|
|
48
43
|
return new URLSearchParams(window.location.search).has(
|
|
49
|
-
MetapageHashParams.mp_debug
|
|
44
|
+
MetapageHashParams.mp_debug,
|
|
50
45
|
);
|
|
51
46
|
};
|
|
52
47
|
|
|
53
48
|
export const isDebugFromUrlsParams = (): boolean => {
|
|
54
49
|
const param = new URLSearchParams(window.location.search).get(
|
|
55
|
-
MetapageHashParams.mp_debug
|
|
50
|
+
MetapageHashParams.mp_debug,
|
|
56
51
|
);
|
|
57
52
|
return param === "true" || param === "1";
|
|
58
53
|
};
|
|
@@ -162,19 +157,21 @@ export const pageLoaded = async (): Promise<void> => {
|
|
|
162
157
|
export const metapageAllSha256Hash = async (metapage: MetapageDefinitionV2) => {
|
|
163
158
|
const metapageStr = stringify(metapage);
|
|
164
159
|
return await sha256ToBase64(metapageStr);
|
|
165
|
-
}
|
|
160
|
+
};
|
|
166
161
|
|
|
167
|
-
export const metapageOnlyEssentailSha256Hash = async (
|
|
162
|
+
export const metapageOnlyEssentailSha256Hash = async (
|
|
163
|
+
metapage: Pick<MetapageDefinitionV2, "metaframes" | "version">,
|
|
164
|
+
) => {
|
|
168
165
|
const metapageStr = stringify({
|
|
169
166
|
version: metapage.version,
|
|
170
167
|
metaframes: metapage.metaframes,
|
|
171
168
|
});
|
|
172
169
|
return await sha256ToBase64(metapageStr);
|
|
173
|
-
}
|
|
170
|
+
};
|
|
174
171
|
|
|
175
172
|
async function sha256ToBase64(str: string) {
|
|
176
173
|
const encoder = new TextEncoder();
|
|
177
174
|
const data = encoder.encode(str);
|
|
178
|
-
const hash = await crypto.subtle.digest(
|
|
175
|
+
const hash = await crypto.subtle.digest("SHA-256", data);
|
|
179
176
|
return btoa(String.fromCharCode(...new Uint8Array(hash)));
|
|
180
177
|
}
|
package/src/metapage/README.md
CHANGED
|
@@ -3,9 +3,9 @@ I'd like the initialize steps to be:
|
|
|
3
3
|
1. set metapage definition and state (input + output values of metaframes). Not pipes yet.
|
|
4
4
|
2. start iframes
|
|
5
5
|
3. iframes
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
- can't send messages until parent sends init package that includes initial values (inputs+outputs)
|
|
7
|
+
- sends init request to parent
|
|
8
|
+
- parent sends init package in response, incl inputs+outputs
|
|
9
|
+
- get init package, updates outputs (which does nothing), then inputs, then allow events that trigger downstream code, and potentially output updates. Ignore when outputs match, push downstream if outputs are different.
|
|
10
10
|
4. there is no way to reliably wait until all child metaframes are ready, they point to internet resources that can be down, but you don't want the rest of the metapgae to be down. So the next step does not wait for the previous step to complete.
|
|
11
|
-
5. Set all pipes. No need to pipe values because the initial state is already set.
|
|
11
|
+
5. Set all pipes. No need to pipe values because the initial state is already set.
|
package/src/metapage/Shared.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EventEmitter } from
|
|
1
|
+
import { EventEmitter } from "eventemitter3";
|
|
2
2
|
|
|
3
|
-
import { MetapageEvents } from
|
|
4
|
-
import { JsonRpcMethodsFromParent } from
|
|
5
|
-
import { MetapageDefinitionV2 } from
|
|
6
|
-
import { MetapageVersionCurrent } from
|
|
3
|
+
import { MetapageEvents } from "./events.js";
|
|
4
|
+
import { JsonRpcMethodsFromParent } from "./jsonrpc.js";
|
|
5
|
+
import { MetapageDefinitionV2 } from "./v2/index.js";
|
|
6
|
+
import { MetapageVersionCurrent } from "./versions.js";
|
|
7
7
|
|
|
8
8
|
export enum MetapageHashParams {
|
|
9
9
|
mp_debug = "mp_debug",
|
|
@@ -23,7 +23,7 @@ type AnyMetaframeDefinition =
|
|
|
23
23
|
|
|
24
24
|
export const convertMetaframeDefinitionToVersion = async (
|
|
25
25
|
def: any | AnyMetaframeDefinition,
|
|
26
|
-
targetVersion: VersionsMetaframe
|
|
26
|
+
targetVersion: VersionsMetaframe,
|
|
27
27
|
): Promise<any> => {
|
|
28
28
|
if (!def) {
|
|
29
29
|
throw "Metaframe definition null";
|
|
@@ -31,7 +31,7 @@ export const convertMetaframeDefinitionToVersion = async (
|
|
|
31
31
|
|
|
32
32
|
if (!def.version) {
|
|
33
33
|
throw `Missing "version" key in metaframe definition: ${JSON.stringify(
|
|
34
|
-
def
|
|
34
|
+
def,
|
|
35
35
|
)}`;
|
|
36
36
|
}
|
|
37
37
|
if (!targetVersion) {
|
|
@@ -52,7 +52,7 @@ export const convertMetaframeDefinitionToVersion = async (
|
|
|
52
52
|
headers: {
|
|
53
53
|
"Content-Type": "application/json",
|
|
54
54
|
},
|
|
55
|
-
}
|
|
55
|
+
},
|
|
56
56
|
);
|
|
57
57
|
const respBody = await resp.json();
|
|
58
58
|
return respBody as MetaframeDefinitionV2;
|
|
@@ -63,20 +63,20 @@ export const convertMetaframeDefinitionToVersion = async (
|
|
|
63
63
|
|
|
64
64
|
const targetDefinition = convertMetaframeDefinitionToTargetVersionInternal(
|
|
65
65
|
def,
|
|
66
|
-
targetVersion
|
|
66
|
+
targetVersion,
|
|
67
67
|
);
|
|
68
68
|
return targetDefinition;
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
export const convertMetaframeDefinitionToCurrentVersion = async (
|
|
72
|
-
def: any | AnyMetaframeDefinition
|
|
72
|
+
def: any | AnyMetaframeDefinition,
|
|
73
73
|
): Promise<MetaframeDefinitionV1> => {
|
|
74
74
|
return convertMetaframeDefinitionToVersion(def, MetaframeVersionCurrent);
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
78
78
|
def: any | AnyMetaframeDefinition,
|
|
79
|
-
targetVersion: VersionsMetaframe
|
|
79
|
+
targetVersion: VersionsMetaframe,
|
|
80
80
|
): AnyMetaframeDefinition => {
|
|
81
81
|
if (!def) {
|
|
82
82
|
throw "Metaframe definition null";
|
|
@@ -103,10 +103,10 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
103
103
|
case "0.3": {
|
|
104
104
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
105
105
|
currentDefinition = definition_v0_3_to_v0_4(
|
|
106
|
-
currentDefinition as MetaframeDefinitionV03
|
|
106
|
+
currentDefinition as MetaframeDefinitionV03,
|
|
107
107
|
);
|
|
108
108
|
currentVersion = getMatchingMetaframeVersion(
|
|
109
|
-
currentDefinition.version
|
|
109
|
+
currentDefinition.version,
|
|
110
110
|
);
|
|
111
111
|
} else {
|
|
112
112
|
throw `Cannot convert from version ${currentVersion} to ${targetVersion}`;
|
|
@@ -116,17 +116,17 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
116
116
|
case "0.4": {
|
|
117
117
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
118
118
|
currentDefinition = definition_v0_4_to_v0_5(
|
|
119
|
-
currentDefinition as MetaframeDefinitionV4
|
|
119
|
+
currentDefinition as MetaframeDefinitionV4,
|
|
120
120
|
);
|
|
121
121
|
currentVersion = getMatchingMetaframeVersion(
|
|
122
|
-
currentDefinition.version
|
|
122
|
+
currentDefinition.version,
|
|
123
123
|
);
|
|
124
124
|
} else {
|
|
125
125
|
currentDefinition = definition_v0_4_to_v0_3(
|
|
126
|
-
currentDefinition as MetaframeDefinitionV4
|
|
126
|
+
currentDefinition as MetaframeDefinitionV4,
|
|
127
127
|
);
|
|
128
128
|
currentVersion = getMatchingMetaframeVersion(
|
|
129
|
-
currentDefinition.version
|
|
129
|
+
currentDefinition.version,
|
|
130
130
|
);
|
|
131
131
|
}
|
|
132
132
|
break;
|
|
@@ -134,17 +134,17 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
134
134
|
case "0.5": {
|
|
135
135
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
136
136
|
currentDefinition = definition_v0_5_to_v0_6(
|
|
137
|
-
currentDefinition as MetaframeDefinitionV5
|
|
137
|
+
currentDefinition as MetaframeDefinitionV5,
|
|
138
138
|
);
|
|
139
139
|
currentVersion = getMatchingMetaframeVersion(
|
|
140
|
-
currentDefinition.version
|
|
140
|
+
currentDefinition.version,
|
|
141
141
|
);
|
|
142
142
|
} else {
|
|
143
143
|
currentDefinition = definition_v0_5_to_v0_4(
|
|
144
|
-
currentDefinition as MetaframeDefinitionV5
|
|
144
|
+
currentDefinition as MetaframeDefinitionV5,
|
|
145
145
|
);
|
|
146
146
|
currentVersion = getMatchingMetaframeVersion(
|
|
147
|
-
currentDefinition.version
|
|
147
|
+
currentDefinition.version,
|
|
148
148
|
);
|
|
149
149
|
}
|
|
150
150
|
break;
|
|
@@ -152,17 +152,17 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
152
152
|
case "0.6": {
|
|
153
153
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
154
154
|
currentDefinition = definition_v0_6_to_v1(
|
|
155
|
-
currentDefinition as MetaframeDefinitionV6
|
|
155
|
+
currentDefinition as MetaframeDefinitionV6,
|
|
156
156
|
);
|
|
157
157
|
currentVersion = getMatchingMetaframeVersion(
|
|
158
|
-
currentDefinition.version
|
|
158
|
+
currentDefinition.version,
|
|
159
159
|
);
|
|
160
160
|
} else {
|
|
161
161
|
currentDefinition = definition_v0_6_to_v0_5(
|
|
162
|
-
currentDefinition as MetaframeDefinitionV6
|
|
162
|
+
currentDefinition as MetaframeDefinitionV6,
|
|
163
163
|
);
|
|
164
164
|
currentVersion = getMatchingMetaframeVersion(
|
|
165
|
-
currentDefinition.version
|
|
165
|
+
currentDefinition.version,
|
|
166
166
|
);
|
|
167
167
|
}
|
|
168
168
|
break;
|
|
@@ -170,17 +170,17 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
170
170
|
case "1": {
|
|
171
171
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
172
172
|
currentDefinition = definition_v1_to_v2(
|
|
173
|
-
currentDefinition as MetaframeDefinitionV1
|
|
173
|
+
currentDefinition as MetaframeDefinitionV1,
|
|
174
174
|
);
|
|
175
175
|
currentVersion = getMatchingMetaframeVersion(
|
|
176
|
-
currentDefinition.version
|
|
176
|
+
currentDefinition.version,
|
|
177
177
|
);
|
|
178
178
|
} else {
|
|
179
179
|
currentDefinition = definition_v1_to_v0_6(
|
|
180
|
-
currentDefinition as MetaframeDefinitionV1
|
|
180
|
+
currentDefinition as MetaframeDefinitionV1,
|
|
181
181
|
);
|
|
182
182
|
currentVersion = getMatchingMetaframeVersion(
|
|
183
|
-
currentDefinition.version
|
|
183
|
+
currentDefinition.version,
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
186
|
break;
|
|
@@ -190,10 +190,10 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
190
190
|
throw `Cannot convert from version ${currentVersion} to ${targetVersion}`;
|
|
191
191
|
} else {
|
|
192
192
|
currentDefinition = definition_v2_to_v1(
|
|
193
|
-
currentDefinition as MetaframeDefinitionV2
|
|
193
|
+
currentDefinition as MetaframeDefinitionV2,
|
|
194
194
|
);
|
|
195
195
|
currentVersion = getMatchingMetaframeVersion(
|
|
196
|
-
currentDefinition.version
|
|
196
|
+
currentDefinition.version,
|
|
197
197
|
);
|
|
198
198
|
}
|
|
199
199
|
break;
|
|
@@ -208,7 +208,7 @@ const convertMetaframeDefinitionToTargetVersionInternal = (
|
|
|
208
208
|
export const convertMetaframeJsonToCurrentVersion = async (
|
|
209
209
|
m: AnyMetaframeDefinition | undefined,
|
|
210
210
|
// deprecated
|
|
211
|
-
opts?: { errorIfUnknownVersion?: boolean }
|
|
211
|
+
opts?: { errorIfUnknownVersion?: boolean },
|
|
212
212
|
): Promise<MetaframeDefinitionV2 | undefined> => {
|
|
213
213
|
if (!m) {
|
|
214
214
|
return;
|
|
@@ -271,7 +271,7 @@ const definition_v0_5_to_v0_4 = (def: MetaframeDefinitionV5) => {
|
|
|
271
271
|
|
|
272
272
|
// v0.6 and v1 are identical, but remove the operations field
|
|
273
273
|
const definition_v0_6_to_v1 = (
|
|
274
|
-
def: MetaframeDefinitionV6
|
|
274
|
+
def: MetaframeDefinitionV6,
|
|
275
275
|
): MetaframeDefinitionV1 => {
|
|
276
276
|
return create(def, (draft: MetaframeDefinitionV6) => {
|
|
277
277
|
draft.version = "1";
|
|
@@ -283,7 +283,7 @@ const definition_v0_6_to_v1 = (
|
|
|
283
283
|
|
|
284
284
|
// v0.6 and v1 are identical
|
|
285
285
|
const definition_v1_to_v0_6 = (
|
|
286
|
-
def: MetaframeDefinitionV1
|
|
286
|
+
def: MetaframeDefinitionV1,
|
|
287
287
|
): MetaframeDefinitionV6 => {
|
|
288
288
|
return create(def, (draft: MetaframeDefinitionV1) => {
|
|
289
289
|
draft.version = "0.6";
|
|
@@ -294,7 +294,7 @@ const definition_v1_to_v0_6 = (
|
|
|
294
294
|
};
|
|
295
295
|
|
|
296
296
|
const definition_v2_to_v1 = (
|
|
297
|
-
def: MetaframeDefinitionV2
|
|
297
|
+
def: MetaframeDefinitionV2,
|
|
298
298
|
): MetaframeDefinitionV1 => {
|
|
299
299
|
return create(def, (draft: MetaframeDefinitionV2) => {
|
|
300
300
|
draft.version = "1";
|
|
@@ -309,7 +309,7 @@ const definition_v2_to_v1 = (
|
|
|
309
309
|
};
|
|
310
310
|
|
|
311
311
|
const definition_v1_to_v2 = (
|
|
312
|
-
def: MetaframeDefinitionV1
|
|
312
|
+
def: MetaframeDefinitionV1,
|
|
313
313
|
): MetaframeDefinitionV2 => {
|
|
314
314
|
return create(def, (draft: MetaframeDefinitionV1) => {
|
|
315
315
|
draft.version = "2";
|
|
@@ -328,7 +328,7 @@ const definition_v1_to_v2 = (
|
|
|
328
328
|
// which we are not using in any of those versions, its too new and not stable
|
|
329
329
|
// and not documented.
|
|
330
330
|
const definition_v0_5_to_v0_6 = (
|
|
331
|
-
source: MetaframeDefinitionV5
|
|
331
|
+
source: MetaframeDefinitionV5,
|
|
332
332
|
): MetaframeDefinitionV6 => {
|
|
333
333
|
return create(source, (draft: MetaframeDefinitionV5) => {
|
|
334
334
|
draft.version = "0.6";
|
|
@@ -342,7 +342,7 @@ const definition_v0_5_to_v0_6 = (
|
|
|
342
342
|
// which we are not using in any of those versions, its too new and not stable
|
|
343
343
|
// and not documented.
|
|
344
344
|
const definition_v0_6_to_v0_5 = (
|
|
345
|
-
source: MetaframeDefinitionV6
|
|
345
|
+
source: MetaframeDefinitionV6,
|
|
346
346
|
): MetaframeDefinitionV5 => {
|
|
347
347
|
return create<MetaframeDefinitionV5>(
|
|
348
348
|
source,
|
|
@@ -351,13 +351,13 @@ const definition_v0_6_to_v0_5 = (
|
|
|
351
351
|
if (draft?.metadata?.operations) {
|
|
352
352
|
delete draft.metadata.operations;
|
|
353
353
|
}
|
|
354
|
-
}
|
|
354
|
+
},
|
|
355
355
|
);
|
|
356
356
|
};
|
|
357
357
|
|
|
358
358
|
// ["0.3", "0.4", "0.5", "0.6", "1"]
|
|
359
359
|
export const getMatchingMetaframeVersion = (
|
|
360
|
-
version: string
|
|
360
|
+
version: string,
|
|
361
361
|
): VersionsMetaframe => {
|
|
362
362
|
if (version === "latest") {
|
|
363
363
|
return MetaframeVersionCurrent;
|
|
@@ -17,7 +17,7 @@ export const convertMetapageDefinitionToVersion = async (
|
|
|
17
17
|
| MetapageDefinitionV03
|
|
18
18
|
| MetapageDefinitionV1
|
|
19
19
|
| MetapageDefinitionV2,
|
|
20
|
-
targetVersion: VersionsMetapage
|
|
20
|
+
targetVersion: VersionsMetapage,
|
|
21
21
|
): Promise<any> => {
|
|
22
22
|
if (!def) {
|
|
23
23
|
throw "Metapage definition null";
|
|
@@ -46,7 +46,7 @@ export const convertMetapageDefinitionToVersion = async (
|
|
|
46
46
|
headers: {
|
|
47
47
|
"Content-Type": "application/json",
|
|
48
48
|
},
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
50
|
);
|
|
51
51
|
const respBody = await resp.json();
|
|
52
52
|
return respBody as MetapageDefinitionV1;
|
|
@@ -57,7 +57,7 @@ export const convertMetapageDefinitionToVersion = async (
|
|
|
57
57
|
|
|
58
58
|
const targetDefinition = convertMetapageDefinitionToTargetVersionInternal(
|
|
59
59
|
def,
|
|
60
|
-
targetVersion
|
|
60
|
+
targetVersion,
|
|
61
61
|
);
|
|
62
62
|
return targetDefinition;
|
|
63
63
|
};
|
|
@@ -68,7 +68,7 @@ export const convertMetapageDefinitionToCurrentVersion = async (
|
|
|
68
68
|
| MetapageDefinitionV02
|
|
69
69
|
| MetapageDefinitionV03
|
|
70
70
|
| MetapageDefinitionV1
|
|
71
|
-
| MetapageDefinitionV2
|
|
71
|
+
| MetapageDefinitionV2,
|
|
72
72
|
): Promise<MetapageDefinitionV2> => {
|
|
73
73
|
return convertMetapageDefinitionToVersion(def, MetapageVersionCurrent);
|
|
74
74
|
};
|
|
@@ -80,7 +80,7 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
80
80
|
| MetapageDefinitionV03
|
|
81
81
|
| MetapageDefinitionV1
|
|
82
82
|
| MetapageDefinitionV2,
|
|
83
|
-
targetVersion: VersionsMetapage
|
|
83
|
+
targetVersion: VersionsMetapage,
|
|
84
84
|
):
|
|
85
85
|
| MetapageDefinitionV02
|
|
86
86
|
| MetapageDefinitionV03
|
|
@@ -92,7 +92,7 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
92
92
|
|
|
93
93
|
if (!def.version) {
|
|
94
94
|
throw `Missing "version" key in metapage definition: ${JSON.stringify(
|
|
95
|
-
def
|
|
95
|
+
def,
|
|
96
96
|
)}`;
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -112,10 +112,10 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
112
112
|
case "0.2": {
|
|
113
113
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
114
114
|
currentDefinition = definition_v0_2_to_v0_3(
|
|
115
|
-
currentDefinition as MetapageDefinitionV02
|
|
115
|
+
currentDefinition as MetapageDefinitionV02,
|
|
116
116
|
);
|
|
117
117
|
currentVersion = getMatchingMetapageVersion(
|
|
118
|
-
currentDefinition.version
|
|
118
|
+
currentDefinition.version,
|
|
119
119
|
);
|
|
120
120
|
} else {
|
|
121
121
|
throw `Cannot convert from version ${currentVersion} to ${targetVersion}`;
|
|
@@ -125,17 +125,17 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
125
125
|
case "0.3": {
|
|
126
126
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
127
127
|
currentDefinition = definition_v0_3_to_v1(
|
|
128
|
-
currentDefinition as MetapageDefinitionV03
|
|
128
|
+
currentDefinition as MetapageDefinitionV03,
|
|
129
129
|
);
|
|
130
130
|
currentVersion = getMatchingMetapageVersion(
|
|
131
|
-
currentDefinition.version
|
|
131
|
+
currentDefinition.version,
|
|
132
132
|
);
|
|
133
133
|
} else {
|
|
134
134
|
currentDefinition = definition_v0_3_to_v0_2(
|
|
135
|
-
currentDefinition as MetapageDefinitionV03
|
|
135
|
+
currentDefinition as MetapageDefinitionV03,
|
|
136
136
|
);
|
|
137
137
|
currentVersion = getMatchingMetapageVersion(
|
|
138
|
-
currentDefinition.version
|
|
138
|
+
currentDefinition.version,
|
|
139
139
|
);
|
|
140
140
|
}
|
|
141
141
|
break;
|
|
@@ -143,17 +143,17 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
143
143
|
case "1": {
|
|
144
144
|
if (compareVersions(targetVersion, currentVersion) > 0) {
|
|
145
145
|
currentDefinition = definition_v1_to_v2(
|
|
146
|
-
currentDefinition as MetapageDefinitionV1
|
|
146
|
+
currentDefinition as MetapageDefinitionV1,
|
|
147
147
|
);
|
|
148
148
|
currentVersion = getMatchingMetapageVersion(
|
|
149
|
-
currentDefinition.version
|
|
149
|
+
currentDefinition.version,
|
|
150
150
|
);
|
|
151
151
|
} else {
|
|
152
152
|
currentDefinition = definition_v1_to_v0_3(
|
|
153
|
-
currentDefinition as MetapageDefinitionV1
|
|
153
|
+
currentDefinition as MetapageDefinitionV1,
|
|
154
154
|
);
|
|
155
155
|
currentVersion = getMatchingMetapageVersion(
|
|
156
|
-
currentDefinition.version
|
|
156
|
+
currentDefinition.version,
|
|
157
157
|
);
|
|
158
158
|
}
|
|
159
159
|
break;
|
|
@@ -163,10 +163,10 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
163
163
|
throw `Cannot convert from version ${currentVersion} to ${targetVersion}, 1 is the latest version`;
|
|
164
164
|
} else {
|
|
165
165
|
currentDefinition = definition_v2_to_v1(
|
|
166
|
-
currentDefinition as MetapageDefinitionV2
|
|
166
|
+
currentDefinition as MetapageDefinitionV2,
|
|
167
167
|
);
|
|
168
168
|
currentVersion = getMatchingMetapageVersion(
|
|
169
|
-
currentDefinition.version
|
|
169
|
+
currentDefinition.version,
|
|
170
170
|
);
|
|
171
171
|
}
|
|
172
172
|
break;
|
|
@@ -179,7 +179,7 @@ const convertMetapageDefinitionToTargetVersionInternal = (
|
|
|
179
179
|
};
|
|
180
180
|
|
|
181
181
|
const definition_v0_2_to_v0_3 = (
|
|
182
|
-
old: MetapageDefinitionV02
|
|
182
|
+
old: MetapageDefinitionV02,
|
|
183
183
|
): MetapageDefinitionV03 => {
|
|
184
184
|
return create<MetapageDefinitionV03>(old, (draft: MetapageDefinitionV02) => {
|
|
185
185
|
// Exactly the same except v0.3 has plugins
|
|
@@ -188,7 +188,7 @@ const definition_v0_2_to_v0_3 = (
|
|
|
188
188
|
};
|
|
189
189
|
|
|
190
190
|
const definition_v0_3_to_v0_2 = (
|
|
191
|
-
old: MetapageDefinitionV03
|
|
191
|
+
old: MetapageDefinitionV03,
|
|
192
192
|
): MetapageDefinitionV02 => {
|
|
193
193
|
return create<MetapageDefinitionV02>(old, (draft: MetapageDefinitionV03) => {
|
|
194
194
|
// Exactly the same except v0.3 has plugins
|
|
@@ -197,7 +197,7 @@ const definition_v0_3_to_v0_2 = (
|
|
|
197
197
|
};
|
|
198
198
|
|
|
199
199
|
const definition_v0_3_to_v1 = (
|
|
200
|
-
def: MetapageDefinitionV03
|
|
200
|
+
def: MetapageDefinitionV03,
|
|
201
201
|
): MetapageDefinitionV1 => {
|
|
202
202
|
return create<MetapageDefinitionV1>(def, (draft) => {
|
|
203
203
|
// We removed plugins in v1
|
|
@@ -208,7 +208,7 @@ const definition_v0_3_to_v1 = (
|
|
|
208
208
|
};
|
|
209
209
|
|
|
210
210
|
const definition_v1_to_v0_3 = (
|
|
211
|
-
def: MetapageDefinitionV1
|
|
211
|
+
def: MetapageDefinitionV1,
|
|
212
212
|
): MetapageDefinitionV03 => {
|
|
213
213
|
return create(def, (draft: MetapageDefinitionV1) => {
|
|
214
214
|
// We removed plugins in v1, but we don't need to add them back
|
|
@@ -218,7 +218,7 @@ const definition_v1_to_v0_3 = (
|
|
|
218
218
|
};
|
|
219
219
|
|
|
220
220
|
const definition_v2_to_v1 = (
|
|
221
|
-
def: MetapageDefinitionV2
|
|
221
|
+
def: MetapageDefinitionV2,
|
|
222
222
|
): MetapageDefinitionV1 => {
|
|
223
223
|
return create(def, (draft: MetapageDefinitionV2) => {
|
|
224
224
|
// keywords -> tags
|
|
@@ -237,7 +237,7 @@ const definition_v2_to_v1 = (
|
|
|
237
237
|
};
|
|
238
238
|
|
|
239
239
|
const definition_v1_to_v2 = (
|
|
240
|
-
def: MetapageDefinitionV1
|
|
240
|
+
def: MetapageDefinitionV1,
|
|
241
241
|
): MetapageDefinitionV2 => {
|
|
242
242
|
return create(def, (draft: MetapageDefinitionV1) => {
|
|
243
243
|
// tags -> keywords
|
|
@@ -258,7 +258,7 @@ const definition_v1_to_v2 = (
|
|
|
258
258
|
};
|
|
259
259
|
|
|
260
260
|
export const getMatchingMetapageVersion = (
|
|
261
|
-
version: string
|
|
261
|
+
version: string,
|
|
262
262
|
): VersionsMetapage => {
|
|
263
263
|
if (version === "latest") {
|
|
264
264
|
return MetapageVersionCurrent;
|
package/src/metapage/core.ts
CHANGED
|
@@ -3,8 +3,9 @@ export {
|
|
|
3
3
|
MetaframeVersionsAll,
|
|
4
4
|
MetapageVersionCurrent,
|
|
5
5
|
MetapageVersionsAll,
|
|
6
|
-
} from
|
|
6
|
+
} from "./versions.js";
|
|
7
7
|
export type Url = string;
|
|
8
8
|
export type MetaframePipeId = string;
|
|
9
9
|
export type MetaframeId = string;
|
|
10
10
|
export type MetapageId = string;
|
|
11
|
+
export type Disposer = () => void;
|