@dodona/papyros 0.1.8-rc → 0.1.8

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 (55) hide show
  1. package/README.md +37 -12
  2. package/dist/{Main.d.ts → App.d.ts} +0 -0
  3. package/dist/Backend.d.ts +3 -3
  4. package/dist/CodeEditor.d.ts +14 -3
  5. package/dist/Constants.d.ts +7 -3
  6. package/dist/InputManager.d.ts +32 -0
  7. package/dist/InputServiceWorker.d.ts +1 -0
  8. package/dist/OutputManager.d.ts +23 -0
  9. package/dist/Papyros.d.ts +32 -20
  10. package/dist/PapyrosEvent.d.ts +1 -0
  11. package/dist/ProgrammingLanguage.d.ts +0 -2
  12. package/dist/StatusPanel.d.ts +17 -0
  13. package/dist/examples/Examples.d.ts +6 -0
  14. package/dist/examples/JavaScriptExamples.d.ts +5 -0
  15. package/dist/examples/PythonExamples.d.ts +11 -0
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.LICENSE.txt +7 -0
  18. package/dist/inputServiceWorker.js +1 -0
  19. package/dist/library.d.ts +9 -0
  20. package/dist/util/HTMLShapes.d.ts +2 -0
  21. package/dist/util/Util.d.ts +21 -0
  22. package/dist/workers/input/InputWorker.d.ts +6 -0
  23. package/dist/workers/javascript/JavaScriptWorker.worker.d.ts +2 -1
  24. package/dist/workers/python/Pyodide.d.ts +9 -0
  25. package/dist/workers/python/PythonWorker.worker.d.ts +2 -1
  26. package/package.json +32 -30
  27. package/dist/Backend.js +0 -133
  28. package/dist/Backend.js.map +0 -1
  29. package/dist/BackendManager.js +0 -39
  30. package/dist/BackendManager.js.map +0 -1
  31. package/dist/CodeEditor.js +0 -146
  32. package/dist/CodeEditor.js.map +0 -1
  33. package/dist/Constants.js +0 -16
  34. package/dist/Constants.js.map +0 -1
  35. package/dist/Main.js +0 -42
  36. package/dist/Main.js.map +0 -1
  37. package/dist/Papyros.css +0 -9
  38. package/dist/Papyros.js +0 -390
  39. package/dist/Papyros.js.map +0 -1
  40. package/dist/PapyrosEvent.js +0 -2
  41. package/dist/PapyrosEvent.js.map +0 -1
  42. package/dist/ProgrammingLanguage.js +0 -23
  43. package/dist/ProgrammingLanguage.js.map +0 -1
  44. package/dist/Translations.d.ts +0 -40
  45. package/dist/Translations.js +0 -39
  46. package/dist/Translations.js.map +0 -1
  47. package/dist/util/Logging.js +0 -48
  48. package/dist/util/Logging.js.map +0 -1
  49. package/dist/workers/javascript/JavaScriptWorker.worker.js +0 -91
  50. package/dist/workers/javascript/JavaScriptWorker.worker.js.map +0 -1
  51. package/dist/workers/python/PythonWorker.worker.js +0 -161
  52. package/dist/workers/python/PythonWorker.worker.js.map +0 -1
  53. package/dist/workers/python/init.py.d.ts +0 -1
  54. package/dist/workers/python/init.py.js +0 -2
  55. package/dist/workers/python/init.py.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * escape-html
3
+ * Copyright(c) 2012-2013 TJ Holowaychuk
4
+ * Copyright(c) 2015 Andreas Lubbe
5
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
6
+ * MIT Licensed
7
+ */
@@ -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,{serviceWorkerFetchListener:()=>u,asyncSleep:()=>c,ServiceWorkerError:()=>f,writeMessageAtomics:()=>p,writeMessageServiceWorker:()=>d,writeMessage:()=>y,makeChannel:()=>h,makeAtomicsChannel:()=>v,makeServiceWorkerChannel:()=>b,readMessage:()=>w,syncSleep:()=>g,uuidv4:()=>l});var r,n=(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),o=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{u(n.next(e))}catch(e){i(e)}}function s(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}u((n=n.apply(e,t||[])).next())}))},i=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},a="__SyncMessageServiceWorkerInput__",s="__sync-message-v2__";function u(){var e={},t={};return function(r){var n=r.request.url;return!!n.includes(a)&&(r.respondWith(function(){return o(this,void 0,void 0,(function(){function o(e){var t={message:e,version:s};return new Response(JSON.stringify(t),{status:200})}var a,u,c,l,f,p,d,y;return i(this,(function(i){switch(i.label){case 0:return n.endsWith("/read")?[4,r.request.json()]:[3,5];case 1:return a=i.sent(),u=a.messageId,c=a.timeout,(l=e[u])?(delete e[u],[2,o(l)]):[3,2];case 2:return[4,new Promise((function(e){t[u]=e,setTimeout((function(){delete t[u],e(new Response("",{status:408}))}),c)}))];case 3:return[2,i.sent()];case 4:return[3,8];case 5:return n.endsWith("/write")?[4,r.request.json()]:[3,7];case 6:return f=i.sent(),p=f.message,d=f.messageId,(y=t[d])?(y(o(p)),delete t[d]):e[d]=p,[2,o({early:!y})];case 7:if(n.endsWith("/version"))return[2,new Response(s,{status:200})];i.label=8;case 8:return[2]}}))}))}()),!0)}}function c(e){return new Promise((function(t){return setTimeout(t,e)}))}var l,f=function(e){function t(r,n){var o=e.call(this,"Received status ".concat(n," from ").concat(r,". Ensure the service worker is registered and active."))||this;return o.url=r,o.status=n,Object.setPrototypeOf(o,t.prototype),o}return n(t,e),t}(Error);function p(e,t){var r=(new TextEncoder).encode(JSON.stringify(t)),n=e.data,o=e.meta;if(r.length>n.length)throw"Input is too long";n.set(r,0),Atomics.store(o,0,r.length),Atomics.store(o,1,1),Atomics.notify(o,1)}function d(e,t,r){return o(this,void 0,void 0,(function(){var n,o,a,u,l;return i(this,(function(i){switch(i.label){case 0:return[4,navigator.serviceWorker.ready];case 1:i.sent(),n=e.baseUrl+"/write",o=Date.now(),i.label=2;case 2:return a={message:t,messageId:r},[4,fetch(n,{method:"POST",body:JSON.stringify(a)})];case 3:return u=i.sent(),(l=200===u.status)?[4,u.json()]:[3,5];case 4:l=i.sent().version===s,i.label=5;case 5:return l?[2]:Date.now()-o<e.timeout?[4,c(100)]:[3,7];case 6:return i.sent(),[3,2];case 7:throw new f(n,u.status);case 8:return[2]}}))}))}function y(e,t,r){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return"atomics"!==e.type?[3,1]:(p(e,t),[3,3]);case 1:return[4,d(e,t,r)];case 2:n.sent(),n.label=3;case 3:return[2]}}))}))}function h(e){return void 0===e&&(e={}),"undefined"!=typeof SharedArrayBuffer?v(e.atomics):"serviceWorker"in navigator?b(e.serviceWorker):null}function v(e){var t=(void 0===e?{}:e).bufferSize;return{type:"atomics",data:new Uint8Array(new SharedArrayBuffer(t||131072)),meta:new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT))}}function b(e){return void 0===e&&(e={}),{type:"serviceWorker",baseUrl:(e.scope||"/")+a,timeout:e.timeout||5e3}}function m(e,t){return e>0?+e:t}function w(e,t,r){var n=void 0===r?{}:r,o=n.checkInterrupt,i=n.checkTimeout,a=n.timeout,u=performance.now();i=m(i,o?100:5e3);var c,l=m(a,Number.POSITIVE_INFINITY);if("atomics"===e.type){var p=e.data,d=e.meta;c=function(){if("timed-out"===Atomics.wait(d,1,0,i))return null;var e=Atomics.exchange(d,0,0),t=p.slice(0,e);Atomics.store(d,1,0);var r=(new TextDecoder).decode(t);return JSON.parse(r)}}else c=function(){var r=new XMLHttpRequest,n=e.baseUrl+"/read";r.open("POST",n,!1);var o={messageId:t,timeout:i};r.send(JSON.stringify(o));var a=r.status;if(408===a)return null;if(200===a){var c=JSON.parse(r.responseText);return c.version!==s?null:c.message}if(performance.now()-u<e.timeout)return null;throw new f(n,a)};for(;;){var y=l-(performance.now()-u);if(y<=0)return null;i=Math.min(i,y);var h=c();if(null!==h)return h;if(null==o?void 0:o())return null}}function g(e,t){if(e=m(e,0))if("undefined"!=typeof SharedArrayBuffer){var r=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));r[0]=0,Atomics.wait(r,0,0,e)}else w(t,"sleep ".concat(e," ").concat(l()),{timeout:e})}return l="randomUUID"in crypto?function(){return crypto.randomUUID()}:function(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(function(e){var 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 i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}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);var e=r(137),t=function(){function t(t){this.syncMessageListener=(0,e.serviceWorkerFetchListener)(),this.hostName=t}return t.prototype.handleInputRequest=function(e){return t=this,r=void 0,o=function(){var t;return function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}(this,(function(r){return this.syncMessageListener(e)?[2,!0]:e.request.url.includes(this.hostName)?(t=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})})),e.respondWith(t),[2,!0]):[2,!1]}))},new((n=void 0)||(n=Promise))((function(e,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n((function(e){e(r)}))).then(a,s)}u((o=o.apply(t,r||[])).next())}));var t,r,n,o},t}(),o=location.href,i=new t(o=o.slice(0,o.lastIndexOf("/")+1));addEventListener("fetch",(function(e){return t=this,r=void 0,o=function(){return function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}(this,(function(t){switch(t.label){case 0:return[4,i.handleInputRequest(e)];case 1:return t.sent()||e.respondWith(fetch(e.request)),[2]}}))},new((n=void 0)||(n=Promise))((function(e,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n((function(e){e(r)}))).then(a,s)}u((o=o.apply(t,r||[])).next())}));var t,r,n,o})),addEventListener("install",(function(e){e.waitUntil(skipWaiting())})),addEventListener("activate",(function(e){e.waitUntil(clients.claim())}))})(),n})()}));
@@ -0,0 +1,9 @@
1
+ import { CodeEditor } from "./CodeEditor";
2
+ import { InputManager, InputMode } from "./InputManager";
3
+ import { OutputManager } from "./OutputManager";
4
+ import { Papyros } from "./Papyros";
5
+ import { PapyrosEvent } from "./PapyrosEvent";
6
+ import { StatusPanel } from "./StatusPanel";
7
+ export * from "./ProgrammingLanguage";
8
+ export type { PapyrosEvent };
9
+ export { Papyros, CodeEditor, StatusPanel, InputManager, InputMode, OutputManager, };
@@ -0,0 +1,2 @@
1
+ export declare const svgCircle: (id: string, color: string) => string;
2
+ export declare const inCircle: (content: string, title: string, color: string) => string;
@@ -0,0 +1,21 @@
1
+ import I18n from "i18n-js";
2
+ export declare const t: typeof I18n.t;
3
+ export declare function loadTranslations(): void;
4
+ export declare function getLocales(): Array<string>;
5
+ export declare function getSelectOptions<T>(options: Array<T>, optionText: (option: T) => string, selected?: T): string;
6
+ export declare function renderSelect<T>(selectId: string, options: Array<T>, optionText: (option: T) => string, selected?: T, labelText?: string): string;
7
+ export interface ButtonOptions {
8
+ id: string;
9
+ buttonText: string;
10
+ extraClasses?: string;
11
+ }
12
+ export declare function renderButton(options: ButtonOptions): string;
13
+ export declare function addListener<T extends string>(elementId: string, onEvent: (e: T) => void, eventType?: string, attribute?: string): void;
14
+ export declare function removeSelection(selectId: string): void;
15
+ export interface RenderOptions {
16
+ parentElementId: string;
17
+ classNames?: string;
18
+ attributes?: Map<string, string>;
19
+ }
20
+ export declare function getElement(element: string | HTMLElement): HTMLElement;
21
+ export declare function renderWithOptions(options: RenderOptions, content: string | HTMLElement): HTMLElement;
@@ -0,0 +1,6 @@
1
+ export declare class InputWorker {
2
+ hostName: string;
3
+ syncMessageListener: (e: FetchEvent) => boolean;
4
+ constructor(hostName: string);
5
+ handleInputRequest(event: FetchEvent): Promise<boolean>;
6
+ }
@@ -1 +1,2 @@
1
- export {};
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,9 @@
1
+ export interface Pyodide {
2
+ runPython: (code: string, globals?: any) => any;
3
+ runPythonAsync: (code: string) => Promise<void>;
4
+ loadPackagesFromImports: (code: string) => Promise<void>;
5
+ loadPackage: (names: string | string[]) => Promise<void>;
6
+ globals: Map<string, any>;
7
+ }
8
+ export declare const PYODIDE_INDEX_URL: string;
9
+ export declare const PYODIDE_JS_URL: string;
@@ -1 +1,2 @@
1
- export {};
1
+ declare const _default: any;
2
+ export default _default;
package/package.json CHANGED
@@ -1,34 +1,16 @@
1
1
  {
2
2
  "name": "@dodona/papyros",
3
- "version": "0.1.8-rc",
4
- "description": "Scratchpad for multiple programming languages in the browser.",
5
- "scripts": {
6
- "start": "webpack serve",
7
- "build": "scripts/build.sh",
8
- "test": "echo No tests defined yet",
9
- "lint": "eslint --ext '.js' --ext '.ts' src"
10
- },
11
- "keywords": [
12
- "programming",
13
- "scratchpad"
14
- ],
15
- "author": {
16
- "name": "Winnie De Ridder",
17
- "email": "Winnie.DeRidder@Ugent.be",
18
- "url": "https://github.com/winniederidder"
19
- },
20
- "homepage": "https://docs.dodona.be/papyros/",
21
- "type": "module",
22
- "main": "./dist/Papyros.js",
23
- "license": "MIT",
3
+ "version": "0.1.8",
4
+ "private": false,
5
+ "homepage": ".",
24
6
  "devDependencies": {
25
- "@codemirror/language": "^0.19.5",
26
- "@types/codemirror": "^5.60.5",
7
+ "@babel/traverse": "^7.16.3",
8
+ "@types/escape-html": "^1.0.1",
27
9
  "@types/i18n-js": "^3.8.2",
10
+ "@types/serviceworker": "^0.0.36",
28
11
  "@typescript-eslint/eslint-plugin": "^4.5.0",
29
12
  "@typescript-eslint/parser": "^4.5.0",
30
13
  "autoprefixer": "^10.4.0",
31
- "babel-eslint": "^10.1.0",
32
14
  "bootstrap": "^5.1.2",
33
15
  "css-loader": "^6.5.1",
34
16
  "eslint": "^7.11.0",
@@ -37,18 +19,22 @@
37
19
  "eslint-plugin-import": "^2.22.1",
38
20
  "eslint-plugin-jest": "^25.2.4",
39
21
  "eslint-webpack-plugin": "^2.5.2",
22
+ "i18n-extract": "^0.6.7",
40
23
  "jest": "^27.3.1",
41
24
  "jest-junit": "^13.0.0",
42
25
  "postcss": "^8.3.11",
43
26
  "postcss-import": "^14.0.2",
44
27
  "postcss-loader": "^6.2.0",
28
+ "raw-loader": "^4.0.2",
45
29
  "style-loader": "^3.3.1",
30
+ "tailwindcss": "^2.2.19",
46
31
  "ts-jest": "^27.0.7",
47
32
  "ts-loader": "^9.2.6",
48
33
  "typescript": "^4.1.2",
49
34
  "webpack": "^5.64.0",
50
35
  "webpack-cli": "^4.9.1",
51
- "webpack-dev-server": "3.11.1"
36
+ "webpack-dev-server": "^4.6.0",
37
+ "worker-loader": "^3.0.8"
52
38
  },
53
39
  "dependencies": {
54
40
  "@codemirror/autocomplete": "^0.19.8",
@@ -59,27 +45,43 @@
59
45
  "@codemirror/history": "^0.19.0",
60
46
  "@codemirror/lang-javascript": "^0.19.3",
61
47
  "@codemirror/lang-python": "^0.19.2",
48
+ "@codemirror/language": "^0.19.5",
49
+ "@codemirror/panel": "^0.19.0",
62
50
  "@codemirror/rectangular-selection": "^0.19.1",
63
51
  "@codemirror/search": "^0.19.3",
64
52
  "@codemirror/state": "^0.19.6",
65
53
  "comlink": "^4.3.1",
54
+ "escape-html": "^1.0.3",
66
55
  "i18n-js": "^3.8.0",
67
- "tailwindcss": "^2.2.19"
56
+ "sync-message": "^0.0.8"
57
+ },
58
+ "scripts": {
59
+ "start": "webpack serve --mode development",
60
+ "build:package": "webpack build --mode production --env=entry=./src/Library.ts",
61
+ "build:app": "webpack build --mode production --env=entry=./src/App.ts",
62
+ "test": "echo No tests defined yet",
63
+ "lint": "eslint --ext '.js' --ext '.ts' src",
64
+ "validate:translations": "node scripts/ValidateTranslations.js"
68
65
  },
69
66
  "babel": {
70
67
  "presets": [
71
68
  "@babel/preset-typescript"
72
69
  ]
73
70
  },
71
+ "description": "Scratchpad for multiple programming languages in the browser.",
74
72
  "repository": {
75
73
  "type": "git",
76
74
  "url": "git+https://github.com/dodona-edu/papyros.git"
77
75
  },
76
+ "keywords": [
77
+ "programming",
78
+ "scratchpad"
79
+ ],
80
+ "author": "Winnie De Ridder",
81
+ "license": "MIT",
78
82
  "bugs": {
79
83
  "url": "https://github.com/dodona-edu/papyros/issues"
80
84
  },
81
- "publishConfig": {
82
- "registry": "https://registry.npmjs.org",
83
- "access": "public"
84
- }
85
+ "main": "./dist/index.js",
86
+ "types": "./dist/library.d.ts"
85
87
  }
package/dist/Backend.js DELETED
@@ -1,133 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (_) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- import { INPUT_RELATIVE_URL } from "./Constants";
38
- import { LogType, papyrosLog } from "./util/Logging";
39
- function getInputCallback(inputTextArray, inputMetaData) {
40
- if (inputTextArray && inputMetaData) {
41
- var textDecoder_1 = new TextDecoder();
42
- return function () {
43
- // eslint-disable-next-line no-constant-condition
44
- while (true) {
45
- if (Atomics.wait(inputMetaData, 0, 0, 100) === "timed-out") {
46
- // papyrosLog.log("waiting on input");
47
- // if (interruptBuffer[0] === 2) {
48
- // return null;
49
- // }
50
- }
51
- else {
52
- break;
53
- }
54
- }
55
- Atomics.store(inputMetaData, 0, 0);
56
- var size = Atomics.exchange(inputMetaData, 1, 0);
57
- var bytes = inputTextArray.slice(0, size);
58
- return textDecoder_1.decode(bytes);
59
- };
60
- }
61
- else {
62
- return function () {
63
- var request = new XMLHttpRequest();
64
- do {
65
- // `false` makes the request synchronous
66
- request.open("GET", INPUT_RELATIVE_URL, false);
67
- request.send(null);
68
- } while (request.status >= 400); // todo better error handling
69
- return request.responseText;
70
- };
71
- }
72
- }
73
- var Backend = /** @class */ (function () {
74
- function Backend() {
75
- // eslint-disable-next-line @typescript-eslint/no-empty-function
76
- this.onEvent = function () { };
77
- this.runId = 0;
78
- }
79
- /**
80
- * Initialize the backend, setting up any globals required
81
- * @param {function(PapyrosEvent):void} onEvent Callback for when events occur
82
- * @param {Uint8Array} inputTextArray Optional shared buffer for input
83
- * @param {Int32Array} inputMetaData Optional shared buffer for metadata about input
84
- * @return {Promise<void>} Promise of launching
85
- */
86
- Backend.prototype.launch = function (onEvent, inputTextArray, inputMetaData) {
87
- var _this = this;
88
- var inputCallback = getInputCallback(inputTextArray, inputMetaData);
89
- this.onEvent = function (e) {
90
- e.runId = _this.runId;
91
- onEvent(e);
92
- if (e.type === "input") {
93
- return inputCallback();
94
- }
95
- };
96
- return Promise.resolve();
97
- };
98
- /**
99
- * Validate and run arbitrary code
100
- * @param {string} code The code to run
101
- * @param {string} runId The uuid for this execution
102
- * @return {Promise<void>} Promise of execution
103
- */
104
- Backend.prototype.runCode = function (code, runId) {
105
- return __awaiter(this, void 0, void 0, function () {
106
- var data, error_1, errorString;
107
- return __generator(this, function (_a) {
108
- switch (_a.label) {
109
- case 0:
110
- this.runId = runId;
111
- papyrosLog(LogType.Debug, "Running code in worker: ", code);
112
- _a.label = 1;
113
- case 1:
114
- _a.trys.push([1, 3, , 4]);
115
- return [4 /*yield*/, this._runCodeInternal(code)];
116
- case 2:
117
- data = _a.sent();
118
- papyrosLog(LogType.Important, "ran code: " + code + " and received: ", data);
119
- return [2 /*return*/, this.onEvent({ type: "success", data: data, runId: runId })];
120
- case 3:
121
- error_1 = _a.sent();
122
- errorString = "toString" in error_1 ? error_1.toString() : JSON.stringify(error_1);
123
- papyrosLog(LogType.Error, "Error during execution: ", error_1, errorString);
124
- return [2 /*return*/, this.onEvent({ type: "error", data: errorString, runId: runId })];
125
- case 4: return [2 /*return*/];
126
- }
127
- });
128
- });
129
- };
130
- return Backend;
131
- }());
132
- export { Backend };
133
- //# sourceMappingURL=Backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Backend.js","sourceRoot":"","sources":["../src/Backend.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /* eslint-disable max-len */
2
- import { releaseProxy, wrap } from "comlink";
3
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
4
- // Store Worker per Backend as Comlink proxy has no explicit reference to the Worker
5
- // We need the Worker itself to be able to terminate it (@see stopBackend)
6
- var BACKEND_MAP = new Map();
7
- export function getBackend(language) {
8
- var worker;
9
- switch (language) {
10
- // Requires switch to have actual string constants and make webpack bundle the workers
11
- case ProgrammingLanguage.Python: {
12
- worker = new Worker(new URL("./workers/python/PythonWorker.worker.ts", import.meta.url));
13
- break;
14
- }
15
- case ProgrammingLanguage.JavaScript: {
16
- worker = new Worker(new URL("./workers/javascript/JavaScriptWorker.worker.ts", import.meta.url));
17
- break;
18
- }
19
- default: {
20
- throw new Error(language + " is not yet supported.");
21
- }
22
- }
23
- var backend = wrap(worker);
24
- // store worker itself in the map
25
- BACKEND_MAP.set(backend, worker);
26
- return backend;
27
- }
28
- export function stopBackend(backend) {
29
- if (BACKEND_MAP.has(backend)) {
30
- var toStop = BACKEND_MAP.get(backend);
31
- toStop.terminate();
32
- backend[releaseProxy]();
33
- BACKEND_MAP.delete(backend);
34
- }
35
- else {
36
- throw new Error("Unknown backend supplied for backend " + JSON.stringify(backend));
37
- }
38
- }
39
- //# sourceMappingURL=BackendManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BackendManager.js","sourceRoot":"","sources":["../src/BackendManager.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,YAAY,EAAU,IAAI,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,0EAA0E;AAC1E,IAAM,WAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;AAE5D,MAAM,UAAU,UAAU,CAAC,QAA6B;IACpD,IAAI,MAAM,CAAC;IACX,QAAQ,QAAQ,EAAE;QACd,sFAAsF;QACtF,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzF,MAAM;SACT;QAED,KAAK,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,iDAAiD,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjG,MAAM;SACT;QAED,OAAO,CAAC,CAAC;YACL,MAAM,IAAI,KAAK,CAAI,QAAQ,2BAAwB,CAAC,CAAC;SACxD;KACJ;IACD,IAAM,OAAO,GAAG,IAAI,CAAU,MAAM,CAAC,CAAC;IACtC,iCAAiC;IACjC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAwB;IAChD,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACzC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACxB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC/B;SAAM;QACH,MAAM,IAAI,KAAK,CAAC,0CAAwC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAG,CAAC,CAAC;KACtF;AACL,CAAC"}
@@ -1,146 +0,0 @@
1
- var __read = (this && this.__read) || function (o, n) {
2
- var m = typeof Symbol === "function" && o[Symbol.iterator];
3
- if (!m) return o;
4
- var i = m.call(o), r, ar = [], e;
5
- try {
6
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
- }
8
- catch (error) { e = { error: error }; }
9
- finally {
10
- try {
11
- if (r && !r.done && (m = i["return"])) m.call(i);
12
- }
13
- finally { if (e) throw e.error; }
14
- }
15
- return ar;
16
- };
17
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
- if (ar || !(i in from)) {
20
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
- ar[i] = from[i];
22
- }
23
- }
24
- return to.concat(ar || Array.prototype.slice.call(from));
25
- };
26
- import { indentWithTab } from "@codemirror/commands";
27
- import { javascript } from "@codemirror/lang-javascript";
28
- import { indentUnit } from "@codemirror/language";
29
- import { Compartment, EditorState } from "@codemirror/state";
30
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
31
- import { python } from "@codemirror/lang-python";
32
- import { EditorView, keymap, highlightSpecialChars, drawSelection, highlightActiveLine } from "@codemirror/view";
33
- import { history, historyKeymap } from "@codemirror/history";
34
- import { foldGutter, foldKeymap } from "@codemirror/fold";
35
- import { indentOnInput } from "@codemirror/language";
36
- import { lineNumbers, highlightActiveLineGutter } from "@codemirror/gutter";
37
- import { defaultKeymap } from "@codemirror/commands";
38
- import { bracketMatching } from "@codemirror/matchbrackets";
39
- import { closeBrackets, closeBracketsKeymap } from "@codemirror/closebrackets";
40
- import { searchKeymap, highlightSelectionMatches } from "@codemirror/search";
41
- import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
42
- import { commentKeymap } from "@codemirror/comment";
43
- import { rectangularSelection } from "@codemirror/rectangular-selection";
44
- import { defaultHighlightStyle } from "@codemirror/highlight";
45
- import { lintKeymap } from "@codemirror/lint";
46
- function getLanguageSupport(language) {
47
- switch (language) {
48
- case ProgrammingLanguage.Python: {
49
- return python();
50
- }
51
- case ProgrammingLanguage.JavaScript: {
52
- return javascript();
53
- }
54
- default: {
55
- throw new Error(language + " is not yet supported.");
56
- }
57
- }
58
- }
59
- /*
60
- * - [syntax highlighting depending on the language](#getLanguageSupport)
61
- * - [line numbers](#gutter.lineNumbers)
62
- * - [special character highlighting](#view.highlightSpecialChars)
63
- * - [the undo history](#history.history)
64
- * - [a fold gutter](#fold.foldGutter)
65
- * - [custom selection drawing](#view.drawSelection)
66
- * - [multiple selections](#state.EditorState^allowMultipleSelections)
67
- * - [reindentation on input](#language.indentOnInput)
68
- * - [the default highlight style](#highlight.defaultHighlightStyle) (as fallback)
69
- * - [bracket matching](#matchbrackets.bracketMatching)
70
- * - [bracket closing](#closebrackets.closeBrackets)
71
- * - [autocompletion](#autocomplete.autocompletion)
72
- * - [rectangular selection](#rectangular-selection.rectangularSelection)
73
- * - [active line highlighting](#view.highlightActiveLine)
74
- * - [active line gutter highlighting](#gutter.highlightActiveLineGutter)
75
- * - [selection match highlighting](#search.highlightSelectionMatches)
76
- * Keymaps:
77
- * - [the default command bindings](#commands.defaultKeymap)
78
- * - [search](#search.searchKeymap)
79
- * - [commenting](#comment.commentKeymap)
80
- * - [linting](#lint.lintKeymap)
81
- * - [indenting with tab](#commands.indentWithTab)
82
- */
83
- function getExtensions() {
84
- return [
85
- lineNumbers(),
86
- highlightActiveLineGutter(),
87
- highlightSpecialChars(),
88
- history(),
89
- foldGutter(),
90
- drawSelection(),
91
- EditorState.allowMultipleSelections.of(true),
92
- indentOnInput(),
93
- defaultHighlightStyle.fallback,
94
- bracketMatching(),
95
- closeBrackets(),
96
- autocompletion(),
97
- rectangularSelection(),
98
- highlightActiveLine(),
99
- highlightSelectionMatches(),
100
- keymap.of(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(closeBracketsKeymap), false), __read(defaultKeymap), false), __read(searchKeymap), false), __read(historyKeymap), false), __read(foldKeymap), false), __read(commentKeymap), false), __read(completionKeymap), false), __read(lintKeymap), false)),
101
- keymap.of([indentWithTab])
102
- ];
103
- }
104
- function getEditorView(parentElement, initialCode, extensions) {
105
- if (initialCode === void 0) { initialCode = ""; }
106
- if (extensions === void 0) { extensions = []; }
107
- return new EditorView({
108
- state: EditorState.create({
109
- doc: initialCode,
110
- extensions: extensions
111
- }),
112
- parent: parentElement
113
- });
114
- }
115
- function getIndentUnit(indentLength) {
116
- return new Array(indentLength).fill(" ").join("");
117
- }
118
- var CodeEditor = /** @class */ (function () {
119
- function CodeEditor(element, language, initialCode, indentLength) {
120
- if (indentLength === void 0) { indentLength = 4; }
121
- this.languageCompartment = new Compartment();
122
- this.indentCompartment = new Compartment();
123
- this.editorView = getEditorView(element, initialCode, __spreadArray([
124
- this.languageCompartment.of(getLanguageSupport(language)),
125
- this.indentCompartment.of(indentUnit.of(getIndentUnit(indentLength))),
126
- keymap.of([indentWithTab])
127
- ], __read(getExtensions()), false));
128
- element.replaceChildren(this.editorView.dom);
129
- }
130
- CodeEditor.prototype.setLanguage = function (language) {
131
- this.editorView.dispatch({
132
- effects: this.languageCompartment.reconfigure(getLanguageSupport(language))
133
- });
134
- };
135
- CodeEditor.prototype.setIndentLength = function (indentLength) {
136
- this.editorView.dispatch({
137
- effects: this.indentCompartment.reconfigure(indentUnit.of(getIndentUnit(indentLength)))
138
- });
139
- };
140
- CodeEditor.prototype.getCode = function () {
141
- return this.editorView.state.doc.toString();
142
- };
143
- return CodeEditor;
144
- }());
145
- export { CodeEditor };
146
- //# sourceMappingURL=CodeEditor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeEditor.js","sourceRoot":"","sources":["../src/CodeEditor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAa,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EACH,UAAU,EACV,MAAM,EAAE,qBAAqB,EAC7B,aAAa,EAAE,mBAAmB,EACrC,MACQ,kBAAkB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,SAAS,kBAAkB,CAAC,QAA6B;IACrD,QAAQ,QAAQ,EAAE;QACd,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,MAAM,EAAE,CAAC;SACnB;QACD,KAAK,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,UAAU,EAAE,CAAC;SACvB;QACD,OAAO,CAAC,CAAC;YACL,MAAM,IAAI,KAAK,CAAI,QAAQ,2BAAwB,CAAC,CAAC;SACxD;KACJ;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;EAuBE;AACF,SAAS,aAAa;IAClB,OAAO;QACH,WAAW,EAAE;QACb,yBAAyB,EAAE;QAC3B,qBAAqB,EAAE;QACvB,OAAO,EAAE;QACT,UAAU,EAAE;QACZ,aAAa,EAAE;QACf,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5C,aAAa,EAAE;QACf,qBAAqB,CAAC,QAAQ;QAC9B,eAAe,EAAE;QACjB,aAAa,EAAE;QACf,cAAc,EAAE;QAChB,oBAAoB,EAAE;QACtB,mBAAmB,EAAE;QACrB,yBAAyB,EAAE;QAC3B,MAAM,CAAC,EAAE,4HACF,mBAAmB,kBACnB,aAAa,kBACb,YAAY,kBACZ,aAAa,kBACb,UAAU,kBACV,aAAa,kBACb,gBAAgB,kBAChB,UAAU,UACf;QACF,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;KAC7B,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,aAA0B,EAC7C,WAAgB,EAAE,UAA4B;IAA9C,4BAAA,EAAA,gBAAgB;IAAE,2BAAA,EAAA,eAA4B;IAC9C,OAAO,IAAI,UAAU,CAAC;QAClB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;YACtB,GAAG,EAAE,WAAW;YAChB,UAAU,EAAE,UAAU;SACzB,CAAC;QACF,MAAM,EAAE,aAAa;KACxB,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,YAAoB;IACvC,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;IAKI,oBAAY,OAAoB,EAAE,QAA6B,EAC3D,WAAoB,EAAE,YAAgB;QAAhB,6BAAA,EAAA,gBAAgB;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW;YAE5C,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;kBACvB,aAAa,EAAE,UACpB,CAAC;QACP,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,gCAAW,GAAX,UAAY,QAA6B;QACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;SAC9E,CAAC,CAAC;IACP,CAAC;IAED,oCAAe,GAAf,UAAgB,YAAoB;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;SAC1F,CAAC,CAAC;IACP,CAAC;IAED,4BAAO,GAAP;QACI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC;IACL,iBAAC;AAAD,CAAC,AAlCD,IAkCC"}
package/dist/Constants.js DELETED
@@ -1,16 +0,0 @@
1
- import { ProgrammingLanguage } from "./ProgrammingLanguage";
2
- export var MAIN_APP_ID = "papyros";
3
- export var OUTPUT_TA_ID = "code-output-area";
4
- export var INPUT_TA_ID = "code-input-area";
5
- export var EDITOR_WRAPPER_ID = "code-area";
6
- export var STATE_SPINNER_ID = "state-spinner";
7
- export var APPLICATION_STATE_TEXT_ID = "application-state-text";
8
- export var RUN_BTN_ID = "run-code-btn";
9
- export var TERMINATE_BTN_ID = "terminate-btn";
10
- export var PROGRAMMING_LANGUAGE_SELECT_ID = "programming-language-select";
11
- export var DEFAULT_PROGRAMMING_LANGUAGE = ProgrammingLanguage.Python;
12
- export var LOCALE_SELECT_ID = "locale-select";
13
- export var DEFAULT_LOCALE = "nl";
14
- export var INPUT_RELATIVE_URL = "/__papyros_input";
15
- export var SERVICE_WORKER_PATH = "./inputServiceWorker.js";
16
- //# sourceMappingURL=Constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,IAAM,WAAW,GAAG,SAAS,CAAC;AAErC,MAAM,CAAC,IAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,IAAM,iBAAiB,GAAG,WAAW,CAAC;AAE7C,MAAM,CAAC,IAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,IAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAElE,MAAM,CAAC,IAAM,UAAU,GAAG,cAAc,CAAC;AACzC,MAAM,CAAC,IAAM,gBAAgB,GAAG,eAAe,CAAC;AAEhD,MAAM,CAAC,IAAM,8BAA8B,GAAG,6BAA6B,CAAC;AAC5E,MAAM,CAAC,IAAM,4BAA4B,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAEvE,MAAM,CAAC,IAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,IAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,IAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,IAAM,mBAAmB,GAAG,yBAAyB,CAAC"}
package/dist/Main.js DELETED
@@ -1,42 +0,0 @@
1
- import { DEFAULT_LOCALE, DEFAULT_PROGRAMMING_LANGUAGE, MAIN_APP_ID, SERVICE_WORKER_PATH } from "./Constants";
2
- import { Papyros } from "./Papyros";
3
- import { papyrosLog, LogType } from "./util/Logging";
4
- import { plFromString } from "./ProgrammingLanguage";
5
- var RELOAD_STORAGE_KEY = "__papyros_reloading";
6
- if (window.localStorage.getItem(RELOAD_STORAGE_KEY)) {
7
- // We are the result of the page reload, so we can start
8
- window.localStorage.removeItem(RELOAD_STORAGE_KEY);
9
- startPapyros();
10
- }
11
- else {
12
- if (typeof SharedArrayBuffer === "undefined") {
13
- papyrosLog(LogType.Important, "SharedArrayBuffers are not available. ");
14
- if ("serviceWorker" in navigator) {
15
- papyrosLog(LogType.Important, "Registering service worker.");
16
- // Store that we are reloading, to prevent the next load from doing all this again
17
- window.localStorage.setItem(RELOAD_STORAGE_KEY, RELOAD_STORAGE_KEY);
18
- navigator.serviceWorker.register(SERVICE_WORKER_PATH, { scope: "" })
19
- // service worker adds new headers that may allow SharedArrayBuffers to be used
20
- .then(function () { return window.location.reload(); });
21
- }
22
- else {
23
- document.getElementById(MAIN_APP_ID).innerHTML =
24
- "Your browser is unsupported. \n Please use a modern version of Chrome, Safari, Firefox, ...";
25
- }
26
- }
27
- else {
28
- startPapyros();
29
- }
30
- }
31
- function startPapyros() {
32
- var rootElement = document.getElementById("root");
33
- var urlParams = new URLSearchParams(window.location.search);
34
- var language = plFromString(urlParams.get("language") || DEFAULT_PROGRAMMING_LANGUAGE);
35
- var locale = urlParams.get("locale") || DEFAULT_LOCALE;
36
- Papyros.fromElement(rootElement, {
37
- standAlone: true,
38
- programmingLanguage: language,
39
- locale: locale
40
- });
41
- }
42
- //# sourceMappingURL=Main.js.map
package/dist/Main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EAAE,4BAA4B,EAC5C,WAAW,EAAE,mBAAmB,EACnC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,IAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAGjD,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;IACjD,wDAAwD;IACxD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACnD,YAAY,EAAE,CAAC;CAClB;KAAM;IACH,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;QAC1C,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;QACxE,IAAI,eAAe,IAAI,SAAS,EAAE;YAC9B,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;YAC7D,kFAAkF;YAClF,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YACpE,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;gBAChE,+EAA+E;iBAC9E,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAxB,CAAwB,CAAC,CAAC;SAC7C;aAAM;YACH,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAE,CAAC,SAAS;gBAC3C,6GAC6D,CAAC;SACrE;KACJ;SAAM;QACH,YAAY,EAAE,CAAC;KAClB;CACJ;AAGD,SAAS,YAAY;IACjB,IAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC;IACrD,IAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,4BAA4B,CAAC,CAAC;IACzF,IAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC;IACzD,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE;QAC7B,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,QAAQ;QAC7B,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;AACP,CAAC"}
package/dist/Papyros.css DELETED
@@ -1,9 +0,0 @@
1
- @import "tailwindcss/base";
2
- @import "tailwindcss/components";
3
- @import "tailwindcss/utilities";
4
-
5
- /* Styling elements generated by CodeMirror */
6
-
7
- .cm-scroller, .cm-gutters { /* Min height of the editor via both gutter and scroller */
8
- min-height: 20vh !important;
9
- }