@prismicio/simulator 0.1.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/LICENSE +202 -0
- package/README.md +98 -0
- package/dist/SimulatorAPI.cjs +50 -0
- package/dist/SimulatorAPI.cjs.map +1 -0
- package/dist/SimulatorAPI.d.ts +12 -0
- package/dist/SimulatorAPI.js +50 -0
- package/dist/SimulatorAPI.js.map +1 -0
- package/dist/SimulatorClient.cjs +54 -0
- package/dist/SimulatorClient.cjs.map +1 -0
- package/dist/SimulatorClient.d.ts +10 -0
- package/dist/SimulatorClient.js +54 -0
- package/dist/SimulatorClient.js.map +1 -0
- package/dist/channel/ChannelEmitter.cjs +146 -0
- package/dist/channel/ChannelEmitter.cjs.map +1 -0
- package/dist/channel/ChannelEmitter.d.ts +38 -0
- package/dist/channel/ChannelEmitter.js +146 -0
- package/dist/channel/ChannelEmitter.js.map +1 -0
- package/dist/channel/ChannelNetwork.cjs +112 -0
- package/dist/channel/ChannelNetwork.cjs.map +1 -0
- package/dist/channel/ChannelNetwork.d.ts +24 -0
- package/dist/channel/ChannelNetwork.js +112 -0
- package/dist/channel/ChannelNetwork.js.map +1 -0
- package/dist/channel/ChannelReceiver.cjs +95 -0
- package/dist/channel/ChannelReceiver.cjs.map +1 -0
- package/dist/channel/ChannelReceiver.d.ts +20 -0
- package/dist/channel/ChannelReceiver.js +95 -0
- package/dist/channel/ChannelReceiver.js.map +1 -0
- package/dist/channel/errors.cjs +54 -0
- package/dist/channel/errors.cjs.map +1 -0
- package/dist/channel/errors.d.ts +25 -0
- package/dist/channel/errors.js +54 -0
- package/dist/channel/errors.js.map +1 -0
- package/dist/channel/index.d.ts +10 -0
- package/dist/channel/messages.cjs +66 -0
- package/dist/channel/messages.cjs.map +1 -0
- package/dist/channel/messages.d.ts +10 -0
- package/dist/channel/messages.js +66 -0
- package/dist/channel/messages.js.map +1 -0
- package/dist/channel/types.cjs +11 -0
- package/dist/channel/types.cjs.map +1 -0
- package/dist/channel/types.d.ts +61 -0
- package/dist/channel/types.js +13 -0
- package/dist/channel/types.js.map +1 -0
- package/dist/index.cjs +33 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/kit/SimulatorManager.cjs +140 -0
- package/dist/kit/SimulatorManager.cjs.map +1 -0
- package/dist/kit/SimulatorManager.d.ts +15 -0
- package/dist/kit/SimulatorManager.js +140 -0
- package/dist/kit/SimulatorManager.js.map +1 -0
- package/dist/kit/State.cjs +82 -0
- package/dist/kit/State.cjs.map +1 -0
- package/dist/kit/State.d.ts +25 -0
- package/dist/kit/State.js +82 -0
- package/dist/kit/State.js.map +1 -0
- package/dist/kit/domHelpers.cjs +53 -0
- package/dist/kit/domHelpers.cjs.map +1 -0
- package/dist/kit/domHelpers.d.ts +9 -0
- package/dist/kit/domHelpers.js +53 -0
- package/dist/kit/domHelpers.js.map +1 -0
- package/dist/kit/eventHandlers.cjs +15 -0
- package/dist/kit/eventHandlers.cjs.map +1 -0
- package/dist/kit/eventHandlers.d.ts +4 -0
- package/dist/kit/eventHandlers.js +15 -0
- package/dist/kit/eventHandlers.js.map +1 -0
- package/dist/kit/getDefault.cjs +16 -0
- package/dist/kit/getDefault.cjs.map +1 -0
- package/dist/kit/getDefault.d.ts +8 -0
- package/dist/kit/getDefault.js +16 -0
- package/dist/kit/getDefault.js.map +1 -0
- package/dist/kit/index.cjs +26 -0
- package/dist/kit/index.cjs.map +1 -0
- package/dist/kit/index.d.ts +8 -0
- package/dist/kit/index.js +23 -0
- package/dist/kit/index.js.map +1 -0
- package/dist/kit/messages.cjs +29 -0
- package/dist/kit/messages.cjs.map +1 -0
- package/dist/kit/messages.d.ts +1 -0
- package/dist/kit/messages.js +29 -0
- package/dist/kit/messages.js.map +1 -0
- package/dist/kit/types.cjs +9 -0
- package/dist/kit/types.cjs.map +1 -0
- package/dist/kit/types.d.ts +23 -0
- package/dist/kit/types.js +10 -0
- package/dist/kit/types.js.map +1 -0
- package/dist/lib/EventEmitter.cjs +27 -0
- package/dist/lib/EventEmitter.cjs.map +1 -0
- package/dist/lib/EventEmitter.d.ts +10 -0
- package/dist/lib/EventEmitter.js +27 -0
- package/dist/lib/EventEmitter.js.map +1 -0
- package/dist/lib/__PRODUCTION__.d.ts +7 -0
- package/dist/lib/throttle.cjs +24 -0
- package/dist/lib/throttle.cjs.map +1 -0
- package/dist/lib/throttle.d.ts +1 -0
- package/dist/lib/throttle.js +24 -0
- package/dist/lib/throttle.js.map +1 -0
- package/dist/types.cjs +14 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/package.json +99 -0
- package/src/SimulatorAPI.ts +90 -0
- package/src/SimulatorClient.ts +96 -0
- package/src/channel/ChannelEmitter.ts +278 -0
- package/src/channel/ChannelNetwork.ts +216 -0
- package/src/channel/ChannelReceiver.ts +184 -0
- package/src/channel/errors.ts +53 -0
- package/src/channel/index.ts +75 -0
- package/src/channel/messages.ts +115 -0
- package/src/channel/types.ts +138 -0
- package/src/index.ts +42 -0
- package/src/kit/SimulatorManager.ts +199 -0
- package/src/kit/State.ts +113 -0
- package/src/kit/domHelpers.ts +75 -0
- package/src/kit/eventHandlers.ts +16 -0
- package/src/kit/getDefault.ts +18 -0
- package/src/kit/index.ts +33 -0
- package/src/kit/messages.ts +25 -0
- package/src/kit/types.ts +30 -0
- package/src/lib/EventEmitter.ts +41 -0
- package/src/lib/__PRODUCTION__.ts +12 -0
- package/src/lib/throttle.ts +26 -0
- package/src/types.ts +57 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const throttle = (fn, delay = 16) => {
|
|
4
|
+
let lastExec = 0;
|
|
5
|
+
let timer = null;
|
|
6
|
+
return function(...args) {
|
|
7
|
+
const now = Date.now();
|
|
8
|
+
const delta = now - lastExec;
|
|
9
|
+
if (delta >= delay) {
|
|
10
|
+
fn.apply(this, args);
|
|
11
|
+
lastExec = now;
|
|
12
|
+
} else {
|
|
13
|
+
if (timer) {
|
|
14
|
+
clearTimeout(timer);
|
|
15
|
+
}
|
|
16
|
+
timer = setTimeout(() => {
|
|
17
|
+
fn.apply(this, args);
|
|
18
|
+
lastExec = Date.now();
|
|
19
|
+
}, delay - delta);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.throttle = throttle;
|
|
24
|
+
//# sourceMappingURL=throttle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.cjs","sources":["../../../src/lib/throttle.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const throttle = <TFn extends (...args: any[]) => any>(\n\tfn: TFn,\n\tdelay = 16,\n): ((...args: Parameters<TFn>) => void) => {\n\tlet lastExec = 0;\n\tlet timer: NodeJS.Timeout | null = null;\n\n\treturn function (this: unknown, ...args: Parameters<TFn>) {\n\t\tconst now = Date.now();\n\t\tconst delta = now - lastExec;\n\n\t\tif (delta >= delay) {\n\t\t\tfn.apply(this, args);\n\t\t\tlastExec = now;\n\t\t} else {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tfn.apply(this, args);\n\t\t\t\tlastExec = Date.now();\n\t\t\t}, delay - delta);\n\t\t}\n\t};\n};\n"],"names":[],"mappings":";;AACO,MAAM,WAAW,CACvB,IACA,QAAQ,OACiC;AACzC,MAAI,WAAW;AACf,MAAI,QAA+B;AAEnC,SAAO,YAA4B,MAAqB;AACjD,UAAA,MAAM,KAAK;AACjB,UAAM,QAAQ,MAAM;AAEpB,QAAI,SAAS,OAAO;AAChB,SAAA,MAAM,MAAM,IAAI;AACR,iBAAA;AAAA,IAAA,OACL;AACN,UAAI,OAAO;AACV,qBAAa,KAAK;AAAA,MAClB;AACD,cAAQ,WAAW,MAAK;AACpB,WAAA,MAAM,MAAM,IAAI;AACnB,mBAAW,KAAK;SACd,QAAQ,KAAK;AAAA,IAChB;AAAA,EAAA;AAEH;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const throttle: <TFn extends (...args: any[]) => any>(fn: TFn, delay?: number) => (...args: Parameters<TFn>) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const throttle = (fn, delay = 16) => {
|
|
2
|
+
let lastExec = 0;
|
|
3
|
+
let timer = null;
|
|
4
|
+
return function(...args) {
|
|
5
|
+
const now = Date.now();
|
|
6
|
+
const delta = now - lastExec;
|
|
7
|
+
if (delta >= delay) {
|
|
8
|
+
fn.apply(this, args);
|
|
9
|
+
lastExec = now;
|
|
10
|
+
} else {
|
|
11
|
+
if (timer) {
|
|
12
|
+
clearTimeout(timer);
|
|
13
|
+
}
|
|
14
|
+
timer = setTimeout(() => {
|
|
15
|
+
fn.apply(this, args);
|
|
16
|
+
lastExec = Date.now();
|
|
17
|
+
}, delay - delta);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
throttle
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.js","sources":["../../../src/lib/throttle.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const throttle = <TFn extends (...args: any[]) => any>(\n\tfn: TFn,\n\tdelay = 16,\n): ((...args: Parameters<TFn>) => void) => {\n\tlet lastExec = 0;\n\tlet timer: NodeJS.Timeout | null = null;\n\n\treturn function (this: unknown, ...args: Parameters<TFn>) {\n\t\tconst now = Date.now();\n\t\tconst delta = now - lastExec;\n\n\t\tif (delta >= delay) {\n\t\t\tfn.apply(this, args);\n\t\t\tlastExec = now;\n\t\t} else {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t}\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tfn.apply(this, args);\n\t\t\t\tlastExec = Date.now();\n\t\t\t}, delay - delta);\n\t\t}\n\t};\n};\n"],"names":[],"mappings":"AACO,MAAM,WAAW,CACvB,IACA,QAAQ,OACiC;AACzC,MAAI,WAAW;AACf,MAAI,QAA+B;AAEnC,SAAO,YAA4B,MAAqB;AACjD,UAAA,MAAM,KAAK;AACjB,UAAM,QAAQ,MAAM;AAEpB,QAAI,SAAS,OAAO;AAChB,SAAA,MAAM,MAAM,IAAI;AACR,iBAAA;AAAA,IAAA,OACL;AACN,UAAI,OAAO;AACV,qBAAa,KAAK;AAAA,MAClB;AACD,cAAQ,WAAW,MAAK;AACpB,WAAA,MAAM,MAAM,IAAI;AACnB,mBAAW,KAAK;SACd,QAAQ,KAAK;AAAA,IAChB;AAAA,EAAA;AAEH;"}
|
package/dist/types.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
exports.APIRequestType = void 0;
|
|
4
|
+
(function(APIRequestType2) {
|
|
5
|
+
APIRequestType2["SetActiveSlice"] = "setActiveSlice";
|
|
6
|
+
APIRequestType2["SetSliceZoneSize"] = "setSliceZoneSize";
|
|
7
|
+
})(exports.APIRequestType || (exports.APIRequestType = {}));
|
|
8
|
+
exports.ClientRequestType = void 0;
|
|
9
|
+
(function(ClientRequestType2) {
|
|
10
|
+
ClientRequestType2["Ping"] = "ping";
|
|
11
|
+
ClientRequestType2["SetSliceZone"] = "setSliceZone";
|
|
12
|
+
ClientRequestType2["ScrollToSlice"] = "scrollToSlice";
|
|
13
|
+
})(exports.ClientRequestType || (exports.ClientRequestType = {}));
|
|
14
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/types\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":";;AAeYA,QAAA,iBAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHYA,2BAAAA,QAAAA,iBAGX,CAAA,EAAA;AAWWC,QAAA,oBAAA;AAAA,CAAZ,SAAYA,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJYA,QAAA,sBAAAA,4BAIX,CAAA,EAAA;"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SliceZone } from "@prismicio/types";
|
|
2
|
+
import { RequestMessage, ResponseMessage, Transaction } from "./channel";
|
|
3
|
+
export type ActiveSlice = {
|
|
4
|
+
rect: DOMRect;
|
|
5
|
+
sliceID: string;
|
|
6
|
+
variationID: string;
|
|
7
|
+
index: number;
|
|
8
|
+
};
|
|
9
|
+
export type SliceZoneSize = {
|
|
10
|
+
rect: DOMRect;
|
|
11
|
+
};
|
|
12
|
+
export declare enum APIRequestType {
|
|
13
|
+
SetActiveSlice = "setActiveSlice",
|
|
14
|
+
SetSliceZoneSize = "setSliceZoneSize"
|
|
15
|
+
}
|
|
16
|
+
export type APITransactions = {
|
|
17
|
+
[APIRequestType.SetActiveSlice]: Transaction<RequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>>;
|
|
18
|
+
[APIRequestType.SetSliceZoneSize]: Transaction<RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>>;
|
|
19
|
+
};
|
|
20
|
+
export declare enum ClientRequestType {
|
|
21
|
+
Ping = "ping",
|
|
22
|
+
SetSliceZone = "setSliceZone",
|
|
23
|
+
ScrollToSlice = "scrollToSlice"
|
|
24
|
+
}
|
|
25
|
+
export type ClientTransactions = {
|
|
26
|
+
[ClientRequestType.Ping]: Transaction<RequestMessage<ClientRequestType.Ping>, ResponseMessage<"pong">>;
|
|
27
|
+
[ClientRequestType.SetSliceZone]: Transaction<RequestMessage<ClientRequestType.SetSliceZone, SliceZone>>;
|
|
28
|
+
[ClientRequestType.ScrollToSlice]: Transaction<RequestMessage<ClientRequestType.ScrollToSlice, {
|
|
29
|
+
sliceIndex: number;
|
|
30
|
+
behavior?: "auto" | "smooth";
|
|
31
|
+
block?: "start" | "center" | "end" | "nearest";
|
|
32
|
+
inline?: "start" | "center" | "end" | "nearest";
|
|
33
|
+
}>>;
|
|
34
|
+
};
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var APIRequestType;
|
|
2
|
+
(function(APIRequestType2) {
|
|
3
|
+
APIRequestType2["SetActiveSlice"] = "setActiveSlice";
|
|
4
|
+
APIRequestType2["SetSliceZoneSize"] = "setSliceZoneSize";
|
|
5
|
+
})(APIRequestType || (APIRequestType = {}));
|
|
6
|
+
var ClientRequestType;
|
|
7
|
+
(function(ClientRequestType2) {
|
|
8
|
+
ClientRequestType2["Ping"] = "ping";
|
|
9
|
+
ClientRequestType2["SetSliceZone"] = "setSliceZone";
|
|
10
|
+
ClientRequestType2["ScrollToSlice"] = "scrollToSlice";
|
|
11
|
+
})(ClientRequestType || (ClientRequestType = {}));
|
|
12
|
+
export {
|
|
13
|
+
APIRequestType,
|
|
14
|
+
ClientRequestType
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/types.ts"],"sourcesContent":["import { SliceZone } from \"@prismicio/types\";\n\nimport { RequestMessage, ResponseMessage, Transaction } from \"./channel\";\n\nexport type ActiveSlice = {\n\trect: DOMRect;\n\tsliceID: string;\n\tvariationID: string;\n\tindex: number;\n};\n\nexport type SliceZoneSize = {\n\trect: DOMRect;\n};\n\nexport enum APIRequestType {\n\tSetActiveSlice = \"setActiveSlice\",\n\tSetSliceZoneSize = \"setSliceZoneSize\",\n}\n\nexport type APITransactions = {\n\t[APIRequestType.SetActiveSlice]: Transaction<\n\t\tRequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>\n\t>;\n\t[APIRequestType.SetSliceZoneSize]: Transaction<\n\t\tRequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize | null>\n\t>;\n};\n\nexport enum ClientRequestType {\n\tPing = \"ping\",\n\tSetSliceZone = \"setSliceZone\",\n\tScrollToSlice = \"scrollToSlice\",\n}\n\nexport type ClientTransactions = {\n\t[ClientRequestType.Ping]: Transaction<\n\t\tRequestMessage<ClientRequestType.Ping>,\n\t\tResponseMessage<\"pong\">\n\t>;\n\n\t[ClientRequestType.SetSliceZone]: Transaction<\n\t\tRequestMessage<ClientRequestType.SetSliceZone, SliceZone>\n\t>;\n\n\t[ClientRequestType.ScrollToSlice]: Transaction<\n\t\tRequestMessage<\n\t\t\tClientRequestType.ScrollToSlice,\n\t\t\t{\n\t\t\t\tsliceIndex: number;\n\t\t\t\tbehavior?: \"auto\" | \"smooth\";\n\t\t\t\tblock?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t\tinline?: \"start\" | \"center\" | \"end\" | \"nearest\";\n\t\t\t}\n\t\t>\n\t>;\n};\n"],"names":["APIRequestType","ClientRequestType"],"mappings":"AAeY,IAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,gBAAA,IAAA;AACAA,kBAAA,kBAAA,IAAA;AACD,GAHY,mBAAA,iBAGX,CAAA,EAAA;AAWW,IAAA;AAAA,CAAZ,SAAYC,oBAAiB;AAC5BA,qBAAA,MAAA,IAAA;AACAA,qBAAA,cAAA,IAAA;AACAA,qBAAA,eAAA,IAAA;AACD,GAJY,sBAAA,oBAIX,CAAA,EAAA;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@prismicio/simulator",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Preview and develop Prismic slices fast with minimal configuration",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"typescript",
|
|
7
|
+
"prismic"
|
|
8
|
+
],
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "ssh://git@github.com/github_org_slash_github_repo.git"
|
|
12
|
+
},
|
|
13
|
+
"license": "Apache-2.0",
|
|
14
|
+
"author": "Prismic <contact@prismic.io> (https://prismic.io)",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"require": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"import": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"./kit": {
|
|
28
|
+
"require": {
|
|
29
|
+
"types": "./dist/kit/index.d.ts",
|
|
30
|
+
"default": "./dist/kit/index.cjs"
|
|
31
|
+
},
|
|
32
|
+
"import": {
|
|
33
|
+
"types": "./dist/kit/index.d.ts",
|
|
34
|
+
"default": "./dist/kit/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"./package.json": "./package.json"
|
|
38
|
+
},
|
|
39
|
+
"main": "./dist/index.cjs",
|
|
40
|
+
"module": "./dist/index.js",
|
|
41
|
+
"types": "./dist/index.d.ts",
|
|
42
|
+
"files": [
|
|
43
|
+
"./dist",
|
|
44
|
+
"./src"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "vite build",
|
|
48
|
+
"dev": "nuxi dev playground",
|
|
49
|
+
"format": "prettier --write .",
|
|
50
|
+
"prepare": "npm run build && nuxi prepare playground",
|
|
51
|
+
"release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
|
|
52
|
+
"release:dry": "standard-version --dry-run",
|
|
53
|
+
"release:alpha": "npm run test && standard-version --release-as major --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
|
|
54
|
+
"release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
|
|
55
|
+
"lint": "eslint --ext .js,.ts .",
|
|
56
|
+
"types": "vitest typecheck --run && tsc --noEmit",
|
|
57
|
+
"types:watch": "vitest typecheck",
|
|
58
|
+
"unit": "vitest run --coverage",
|
|
59
|
+
"unit:watch": "vitest watch",
|
|
60
|
+
"size": "size-limit",
|
|
61
|
+
"test": "npm run lint && npm run types && npm run unit && npm run build && npm run size"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@prismicio/client": "^7.0.1",
|
|
65
|
+
"statuses": "^2.0.1"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@nuxt/eslint-config": "^0.1.1",
|
|
69
|
+
"@nuxtjs/prismic": "^3.0.0",
|
|
70
|
+
"@nuxtjs/tailwindcss": "^6.7.0",
|
|
71
|
+
"@size-limit/preset-small-lib": "^8.2.4",
|
|
72
|
+
"@slicemachine/adapter-nuxt": "^0.3.0",
|
|
73
|
+
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
|
74
|
+
"@types/node": "^18",
|
|
75
|
+
"@types/statuses": "^2.0.1",
|
|
76
|
+
"@typescript-eslint/eslint-plugin": "^5.59.9",
|
|
77
|
+
"@typescript-eslint/parser": "^5.59.9",
|
|
78
|
+
"@vitest/coverage-c8": "^0.32.0",
|
|
79
|
+
"eslint": "^8.42.0",
|
|
80
|
+
"eslint-config-prettier": "^8.8.0",
|
|
81
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
82
|
+
"eslint-plugin-tsdoc": "^0.2.17",
|
|
83
|
+
"nuxt": "^3.5.3",
|
|
84
|
+
"prettier": "^2.8.8",
|
|
85
|
+
"prettier-plugin-jsdoc": "^0.4.2",
|
|
86
|
+
"size-limit": "^8.2.4",
|
|
87
|
+
"standard-version": "^9.5.0",
|
|
88
|
+
"typescript": "^5.1.3",
|
|
89
|
+
"vite": "^4.3.9",
|
|
90
|
+
"vite-plugin-sdk": "^0.1.1",
|
|
91
|
+
"vitest": "^0.32.0"
|
|
92
|
+
},
|
|
93
|
+
"engines": {
|
|
94
|
+
"node": ">=14.15.0"
|
|
95
|
+
},
|
|
96
|
+
"publishConfig": {
|
|
97
|
+
"access": "public"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APIRequestType,
|
|
3
|
+
APITransactions,
|
|
4
|
+
ClientRequestType,
|
|
5
|
+
ClientTransactions,
|
|
6
|
+
} from "./types";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
AllChannelReceiverOptions,
|
|
10
|
+
ChannelReceiver,
|
|
11
|
+
TransactionMethod,
|
|
12
|
+
TransactionsHandlers,
|
|
13
|
+
TransactionsMethods,
|
|
14
|
+
} from "./channel";
|
|
15
|
+
|
|
16
|
+
export type SimulatorAPIOptions = {
|
|
17
|
+
activeSliceAPI: boolean;
|
|
18
|
+
sliceZoneSizeAPI: boolean;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const simulatorAPIDefaultOptions: Partial<AllChannelReceiverOptions> &
|
|
22
|
+
SimulatorAPIOptions = {
|
|
23
|
+
requestIDPrefix: "api-",
|
|
24
|
+
activeSliceAPI: false,
|
|
25
|
+
sliceZoneSizeAPI: false,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export class SimulatorAPI
|
|
29
|
+
extends ChannelReceiver<ClientTransactions, SimulatorAPIOptions>
|
|
30
|
+
implements TransactionsMethods<APITransactions>
|
|
31
|
+
{
|
|
32
|
+
constructor(
|
|
33
|
+
requestHandlers: Omit<
|
|
34
|
+
TransactionsHandlers<ClientTransactions>,
|
|
35
|
+
ClientRequestType.Ping
|
|
36
|
+
> &
|
|
37
|
+
Partial<
|
|
38
|
+
Pick<TransactionsHandlers<ClientTransactions>, ClientRequestType.Ping>
|
|
39
|
+
>,
|
|
40
|
+
options?: Partial<AllChannelReceiverOptions & SimulatorAPIOptions>,
|
|
41
|
+
) {
|
|
42
|
+
// True if `options.debug` is true or `debug=true` is among query parameters
|
|
43
|
+
const debug =
|
|
44
|
+
options?.debug ||
|
|
45
|
+
/[?&]debug=true/i.test(decodeURIComponent(window.location.search));
|
|
46
|
+
|
|
47
|
+
super(
|
|
48
|
+
{
|
|
49
|
+
[ClientRequestType.Ping]: (_req, res) => {
|
|
50
|
+
return res.success("pong");
|
|
51
|
+
},
|
|
52
|
+
...requestHandlers,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
...simulatorAPIDefaultOptions,
|
|
56
|
+
...options,
|
|
57
|
+
debug,
|
|
58
|
+
},
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
// Append API to window object
|
|
62
|
+
if (debug) {
|
|
63
|
+
type APIWindow = typeof window & {
|
|
64
|
+
prismic: { sliceSimulator?: { api?: SimulatorAPI[] } };
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
(window as APIWindow).prismic ||= {};
|
|
68
|
+
(window as APIWindow).prismic.sliceSimulator ||= {};
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
70
|
+
(window as APIWindow).prismic.sliceSimulator!.api ||= [];
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
72
|
+
(window as APIWindow).prismic.sliceSimulator!.api!.push(this);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
[APIRequestType.SetActiveSlice]: TransactionMethod<
|
|
77
|
+
APITransactions[APIRequestType.SetActiveSlice]
|
|
78
|
+
> = async (data) => {
|
|
79
|
+
return await this.postFormattedRequest(APIRequestType.SetActiveSlice, data);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
[APIRequestType.SetSliceZoneSize]: TransactionMethod<
|
|
83
|
+
APITransactions[APIRequestType.SetSliceZoneSize]
|
|
84
|
+
> = async (data) => {
|
|
85
|
+
return await this.postFormattedRequest(
|
|
86
|
+
APIRequestType.SetSliceZoneSize,
|
|
87
|
+
data,
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APIRequestType,
|
|
3
|
+
APITransactions,
|
|
4
|
+
ClientRequestType,
|
|
5
|
+
ClientTransactions,
|
|
6
|
+
} from "./types";
|
|
7
|
+
|
|
8
|
+
import { SimulatorAPIOptions } from "./SimulatorAPI";
|
|
9
|
+
import {
|
|
10
|
+
AllChannelEmitterOptions,
|
|
11
|
+
ChannelEmitter,
|
|
12
|
+
TransactionMethod,
|
|
13
|
+
TransactionsHandlers,
|
|
14
|
+
TransactionsMethods,
|
|
15
|
+
} from "./channel";
|
|
16
|
+
|
|
17
|
+
export const simulatorClientDefaultOptions: Partial<AllChannelEmitterOptions> =
|
|
18
|
+
{
|
|
19
|
+
requestIDPrefix: "client-",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export class SimulatorClient
|
|
23
|
+
extends ChannelEmitter<
|
|
24
|
+
APITransactions,
|
|
25
|
+
Partial<AllChannelEmitterOptions>,
|
|
26
|
+
SimulatorAPIOptions
|
|
27
|
+
>
|
|
28
|
+
implements TransactionsMethods<ClientTransactions>
|
|
29
|
+
{
|
|
30
|
+
constructor(
|
|
31
|
+
target: HTMLIFrameElement,
|
|
32
|
+
requestHandlers?: Partial<TransactionsHandlers<APITransactions>>,
|
|
33
|
+
options?: Partial<AllChannelEmitterOptions>,
|
|
34
|
+
) {
|
|
35
|
+
// True if `options.debug` is true or `debug=true` is among query parameters
|
|
36
|
+
const debug =
|
|
37
|
+
options?.debug ||
|
|
38
|
+
/[?&]debug=true/i.test(decodeURIComponent(window.location.search));
|
|
39
|
+
|
|
40
|
+
super(
|
|
41
|
+
target,
|
|
42
|
+
{
|
|
43
|
+
[APIRequestType.SetActiveSlice]: (_req, res) => {
|
|
44
|
+
return res.success();
|
|
45
|
+
},
|
|
46
|
+
[APIRequestType.SetSliceZoneSize]: (_req, res) => {
|
|
47
|
+
return res.success();
|
|
48
|
+
},
|
|
49
|
+
...requestHandlers,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
...simulatorClientDefaultOptions,
|
|
53
|
+
...options,
|
|
54
|
+
debug,
|
|
55
|
+
},
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// Append client to window object
|
|
59
|
+
if (debug) {
|
|
60
|
+
type ClientWindow = typeof window & {
|
|
61
|
+
prismic: { sliceSimulator?: { client?: SimulatorClient[] } };
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
(window as ClientWindow).prismic ||= {};
|
|
65
|
+
(window as ClientWindow).prismic.sliceSimulator ||= {};
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
67
|
+
(window as ClientWindow).prismic.sliceSimulator!.client ||= [];
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
69
|
+
(window as ClientWindow).prismic.sliceSimulator!.client!.push(this);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
[ClientRequestType.Ping]: TransactionMethod<
|
|
74
|
+
ClientTransactions[ClientRequestType.Ping]
|
|
75
|
+
> = async () => {
|
|
76
|
+
return await this.postFormattedRequest(ClientRequestType.Ping);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
[ClientRequestType.SetSliceZone]: TransactionMethod<
|
|
80
|
+
ClientTransactions[ClientRequestType.SetSliceZone]
|
|
81
|
+
> = async (data) => {
|
|
82
|
+
return await this.postFormattedRequest(
|
|
83
|
+
ClientRequestType.SetSliceZone,
|
|
84
|
+
data,
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
[ClientRequestType.ScrollToSlice]: TransactionMethod<
|
|
89
|
+
ClientTransactions[ClientRequestType.ScrollToSlice]
|
|
90
|
+
> = async (data) => {
|
|
91
|
+
return await this.postFormattedRequest(
|
|
92
|
+
ClientRequestType.ScrollToSlice,
|
|
93
|
+
data,
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
}
|