@dodona/papyros 0.1.91-tar → 0.1.94

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/Papyros.d.ts CHANGED
@@ -97,13 +97,6 @@ export declare class Papyros {
97
97
  * @return {string} The currently written code
98
98
  */
99
99
  getCode(): string;
100
- /**
101
- * Helper method to perform the service worker related checks and initialisation
102
- * @param {string} serviceWorkerRoot URL for the directory where the service worker lives
103
- * @param {string} serviceWorkerName The name of the file containing the script
104
- * @return {Promise<boolean>} Whether registration was successful
105
- */
106
- private registerServiceWorker;
107
100
  /**
108
101
  * Configure how user input is handled within Papyros
109
102
  * By default, we will try to use SharedArrayBuffers
@@ -115,7 +108,7 @@ export declare class Papyros {
115
108
  * This allows using SharedArrayBuffers without configuring the HTTP headers yourself
116
109
  * @return {Promise<boolean>} Promise of configuring input
117
110
  */
118
- configureInput(serviceWorkerRoot?: string, serviceWorkerName?: string, allowReload?: boolean): Promise<boolean>;
111
+ configureInput(serviceWorkerRoot?: string, serviceWorkerName?: string): Promise<boolean>;
119
112
  /**
120
113
  * Render Papyros with the given options
121
114
  * @param {PapyrosRenderOptions} renderOptions Options to use
@@ -103,5 +103,5 @@ export declare function renderWithOptions(options: RenderOptions, content: strin
103
103
  * @param {string} contentType The content type of the data
104
104
  * @return {any} The parsed data
105
105
  */
106
- export declare function parseData(data: string, contentType: string): any;
106
+ export declare function parseData(data: string, contentType?: string): any;
107
107
  export {};
@@ -10,9 +10,9 @@ export declare class InputWorker {
10
10
  private syncMessageListener;
11
11
  /**
12
12
  * Create a worker for a specific domain
13
- * @param {string} hostName The name of the host domain
13
+ * @param {string} hostName Optional name of the host domain
14
14
  */
15
- constructor(hostName: string);
15
+ constructor(hostName?: string);
16
16
  /**
17
17
  * Process and potentially handle a fetch request from the application
18
18
  * @param {FetchEvent} event The event denoting a request to a url
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Papyros=t():e.Papyros=t()}(self,(function(){return(()=>{var e={137:e=>{self,e.exports=(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{isServiceWorkerRequest:()=>s,serviceWorkerFetchListener:()=>i,asyncSleep:()=>u,ServiceWorkerError:()=>a,writeMessageAtomics:()=>c,writeMessageServiceWorker:()=>f,writeMessage:()=>l,makeChannel:()=>d,makeAtomicsChannel:()=>y,makeServiceWorkerChannel:()=>p,readMessage:()=>h,syncSleep:()=>v,uuidv4:()=>g});var r=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{a(n.next(e))}catch(e){s(e)}}function u(e){try{a(n.throw(e))}catch(e){s(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}a((n=n.apply(e,t||[])).next())}))};const n="__SyncMessageServiceWorkerInput__",o="__sync-message-v2__";function s(e){return"string"!=typeof e&&(e=e.request.url),e.includes(n)}function i(){const e={},t={};return n=>{const{url:i}=n.request;return!!s(i)&&(n.respondWith(function(){return r(this,void 0,void 0,(function*(){function r(e){const t={message:e,version:o};return new Response(JSON.stringify(t),{status:200})}if(i.endsWith("/read")){const{messageId:o,timeout:s}=yield n.request.json(),i=e[o];return i?(delete e[o],r(i)):yield new Promise((e=>{t[o]=e,setTimeout((function(){delete t[o],e(new Response("",{status:408}))}),s)}))}if(i.endsWith("/write")){const{message:o,messageId:s}=yield n.request.json(),i=t[s];return i?(i(r(o)),delete t[s]):e[s]=o,r({early:!i})}if(i.endsWith("/version"))return new Response(o,{status:200})}))}()),!0)}}function u(e){return new Promise((t=>setTimeout(t,e)))}class a extends Error{constructor(e,t){super(`Received status ${t} from ${e}. Ensure the service worker is registered and active.`),this.url=e,this.status=t,this.type="ServiceWorkerError",Object.setPrototypeOf(this,a.prototype)}}function c(e,t){const r=(new TextEncoder).encode(JSON.stringify(t)),{data:n,meta:o}=e;if(r.length>n.length)throw new Error("Message is too big, increase bufferSize when making channel.");n.set(r,0),Atomics.store(o,0,r.length),Atomics.store(o,1,1),Atomics.notify(o,1)}function f(e,t,n){return r(this,void 0,void 0,(function*(){yield navigator.serviceWorker.ready;const r=e.baseUrl+"/write",s=Date.now();for(;;){const i={message:t,messageId:n},c=yield fetch(r,{method:"POST",body:JSON.stringify(i)});if(200===c.status&&(yield c.json()).version===o)return;if(!(Date.now()-s<e.timeout))throw new a(r,c.status);yield u(100)}}))}function l(e,t,n){return r(this,void 0,void 0,(function*(){"atomics"===e.type?c(e,t):yield f(e,t,n)}))}function d(e={}){return"undefined"!=typeof SharedArrayBuffer?y(e.atomics):"serviceWorker"in navigator?p(e.serviceWorker):null}function y({bufferSize:e}={}){return{type:"atomics",data:new Uint8Array(new SharedArrayBuffer(e||131072)),meta:new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT))}}function p(e={}){return{type:"serviceWorker",baseUrl:(e.scope||"/")+n,timeout:e.timeout||5e3}}function m(e,t){return e>0?+e:t}function h(e,t,{checkInterrupt:r,checkTimeout:n,timeout:s}={}){const i=performance.now();n=m(n,r?100:5e3);const u=m(s,Number.POSITIVE_INFINITY);let c;if("atomics"===e.type){const{data:t,meta:r}=e;c=()=>{if("timed-out"===Atomics.wait(r,1,0,n))return null;{const e=Atomics.exchange(r,0,0),n=t.slice(0,e);Atomics.store(r,1,0);const o=(new TextDecoder).decode(n);return JSON.parse(o)}}}else c=()=>{const r=new XMLHttpRequest,s=e.baseUrl+"/read";r.open("POST",s,!1);const u={messageId:t,timeout:n};r.send(JSON.stringify(u));const{status:c}=r;if(408===c)return null;if(200===c){const e=JSON.parse(r.responseText);return e.version!==o?null:e.message}if(performance.now()-i<e.timeout)return null;throw new a(s,c)};for(;;){const e=u-(performance.now()-i);if(e<=0)return null;n=Math.min(n,e);const t=c();if(null!==t)return t;if(null==r?void 0:r())return null}}function v(e,t){if(e=m(e,0))if("undefined"!=typeof SharedArrayBuffer){const t=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));t[0]=0,Atomics.wait(t,0,0,e)}else h(t,`sleep ${e} ${g()}`,{timeout:e})}let g;return g="randomUUID"in crypto?function(){return crypto.randomUUID()}:function(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(e=>{const t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))},t})()}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{InputWorker:()=>s});var e=r(137),t=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{a(n.next(e))}catch(e){s(e)}}function u(e){try{a(n.throw(e))}catch(e){s(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}a((n=n.apply(e,t||[])).next())}))},o=function(e,t){var r,n,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function u(s){return function(u){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,n=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}},s=function(){function r(t){void 0===t&&(t=""),this.hostName=t,this.syncMessageListener=(0,e.serviceWorkerFetchListener)()}return r.prototype.handleInputRequest=function(e){return t(this,void 0,void 0,(function(){var t;return o(this,(function(r){return this.syncMessageListener(e)?[2,!0]:(t=e.request.url,this.hostName&&t.includes(this.hostName)?(e.respondWith(fetch(e.request).then((function(e){var t=new Headers(e.headers);return t.set("Cross-Origin-Embedder-Policy","require-corp"),t.set("Cross-Origin-Opener-Policy","same-origin"),t.set("Cross-Origin-Resource-Policy","cross-origin"),new Response(e.body,{status:e.status||200,statusText:e.statusText,headers:t})}))),[2,!0]):[2,!1])}))}))},r}()})(),n})()}));
@@ -1,4 +1,2 @@
1
- import { Pyodide } from "./Pyodide";
2
- export declare function getPyodide(): Promise<Pyodide>;
3
1
  declare const _default: any;
4
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dodona/papyros",
3
- "version": "0.1.91-tar",
3
+ "version": "0.1.94",
4
4
  "private": false,
5
5
  "homepage": ".",
6
6
  "devDependencies": {
@@ -19,6 +19,7 @@
19
19
  "eslint-plugin-import": "^2.22.1",
20
20
  "eslint-plugin-jest": "^25.2.4",
21
21
  "eslint-webpack-plugin": "^2.5.2",
22
+ "glob": "^7.2.0",
22
23
  "i18n-extract": "^0.6.7",
23
24
  "jest": "^27.3.1",
24
25
  "jest-junit": "^13.0.0",
@@ -28,13 +29,14 @@
28
29
  "raw-loader": "^4.0.2",
29
30
  "style-loader": "^3.3.1",
30
31
  "tailwindcss": "^2.2.19",
32
+ "terser-webpack-plugin": "^5.3.1",
31
33
  "ts-jest": "^27.0.7",
32
34
  "ts-loader": "^9.2.6",
33
35
  "typescript": "^4.1.2",
34
36
  "url-loader": "^4.1.1",
35
- "webpack": "^5.64.0",
36
- "webpack-cli": "^4.9.1",
37
- "webpack-dev-server": "^4.6.0",
37
+ "webpack": "^5.70.0",
38
+ "webpack-cli": "^4.9.2",
39
+ "webpack-dev-server": "^4.7.4",
38
40
  "worker-loader": "^3.0.8"
39
41
  },
40
42
  "dependencies": {
@@ -52,17 +54,17 @@
52
54
  "@codemirror/search": "^0.19.3",
53
55
  "@codemirror/state": "^0.19.6",
54
56
  "comlink": "^4.3.1",
55
- "comsync": "^0.0.6",
57
+ "comsync": "^0.0.8",
56
58
  "escape-html": "^1.0.3",
57
59
  "i18n-js": "^3.8.0",
58
- "pyodide-worker-runner": "^0.0.7",
59
- "sync-message": "^0.0.9"
60
+ "pyodide-worker-runner": "^0.0.8",
61
+ "sync-message": "^0.0.10"
60
62
  },
61
63
  "scripts": {
62
64
  "start": "yarn setup && webpack serve --mode development",
63
65
  "setup": "bash scripts/setup.sh",
64
- "build:package": "webpack build --mode production --env=entry=./src/Library.ts",
65
- "build:app": "webpack build --mode production --env=entry=./src/App.ts",
66
+ "build:app": "bash scripts/build_package.sh development",
67
+ "build:library": "bash scripts/build_package.sh production",
66
68
  "test": "echo No tests defined yet",
67
69
  "lint": "eslint --ext '.js' --ext '.ts' src",
68
70
  "validate:translations": "node scripts/ValidateTranslations.js"
@@ -86,6 +88,6 @@
86
88
  "bugs": {
87
89
  "url": "https://github.com/dodona-edu/papyros/issues"
88
90
  },
89
- "main": "./dist/index.js",
90
- "types": "./dist/library.d.ts"
91
+ "main": "./dist/Library.js",
92
+ "types": "./dist/Library.d.ts"
91
93
  }