@liascript/exporter 2.6.27--0.14.4 → 2.6.28--0.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ var r,n=require("xhr2"),e=require("yaml"),t=require("path"),a=require("fs-extra"
28
28
  window.LIA = {}
29
29
  }
30
30
  window.LIA.defaultCourseURL = "${t.basename(r.readme)}"
31
- </script>`,i);try{i=i.replace("<title>Lia</title>",`<title>${n.lia.str_title}</title><meta property="og:title" content="${n.lia.str_title}"> <meta name="twitter:title" content="${n.lia.str_title}">`),console.log("updating title ...")}catch(r){console.warn("could not add title")}try{let r=n.lia.definition.macro.comment;i=i.replace('<meta name="description" content="LiaScript is a service for running free and interactive online courses, build with its own Markup-language. So check out the following course ;-)">',`<meta name="description" content="${r}"><meta property="og:description" content="${r}"><meta name="twitter:description" content="${r}">`),console.log("updating description ...")}catch(r){console.warn("could not add description")}try{let r=n.lia.definition.logo;i=k(`<meta property="og:image" content="${r}"><meta name="twitter:image" content="${r}">`,i),console.log("updating logo ...")}catch(r){console.warn("could not add image")}let c=await T(r,n);try{r["web-iframe"]?(await D(t.join(o,"start.html"),i),await q(o,"index.html",r.readme,c,r.style,"start.html")):(i=k(c,i),i=A(i),await D(t.join(o,"index.html"),i))}catch(r){console.warn(r);return}r["web-zip"]?S(o,r.output):await a.move(o,r.output,{filter:y(r.path)})}async function z(r,n){let e=await v(),u=w(),o=t.join(e,"pro");await a.copy(t.join(u,"./assets/scorm1.2"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i)),i=k('<script src="config.js"></script>',i),await D(t.join(o,"config.js"),"window.config_ = "+JSON.stringify({task:n.task,quiz:n.quiz,survey:n.survey})+";");let c=await T(r,n);r["scorm-iframe"]&&await q(o,"start.html",r.readme,c,r.style),r["scorm-embed"]&&(i=k('<script src="course.js"></script>',i,!0),await D(t.join(o,"course.js"),'window["liascript_course"] = '+JSON.stringify(r["scorm-embed"])));try{i=k(c,i),await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}await a.copy(r.path,o,{filter:y(r.path)});let s={version:"1.2",organization:r["scorm-organization"]||"LiaScript",title:n.lia.str_title,language:n.lia.definition.language,masteryScore:r["scorm-masteryScore"]||0,startingPage:r["scorm-iframe"]?"start.html":"index.html",startingParameters:r["scorm-iframe"]||r.embed?void 0:r.readme,source:t.join(e,"pro"),package:{version:n.lia.definition.version,zip:!0,appendTimeToOutput:!1,name:t.basename(r.output),author:n.lia.definition.author,outputFolder:t.dirname(r.output),filename:t.basename(r.output+".zip"),description:n.lia.comment,typicalDuration:r["scorm-typicalDuration"]||"PT0H5M0S",vcard:{author:n.lia.definition.author,org:r["scorm-organization"]||"LiaScript",mail:n.lia.definition.email}}};await l(s)}async function B(r,n){let e=await v(),u=w(),o=t.join(e,"pro");await a.copy(t.join(u,"./assets/scorm2004"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i)),i=k('<script src="config.js"></script>',i);let c="window.config_ = "+JSON.stringify({task:n.task,quiz:n.quiz,survey:n.survey})+";";r["scorm-alwaysActive"]&&(c+='\n\nwindow["ACTIVE"] = true;',r["scorm-masteryScore"]&&(c+='\n\nwindow["MASTERY_SCORE"] ='+parseFloat(r["scorm-masteryScore"])/100)),await D(t.join(o,"config.js"),c);let s=await T(r,n);r["scorm-iframe"]&&await q(o,"start.html",r.readme,s,r.style),r["scorm-embed"]&&(i=k('<script src="course.js"></script>',i,!0),await D(t.join(o,"course.js"),'window["liascript_course"] = '+JSON.stringify(r["scorm-embed"])));try{i=k(s,i),await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}await a.copy(r.path,o,{filter:y(r.path)});let f={version:"2004 4th Edition",organization:r["scorm-organization"]||"LiaScript",title:n.lia.str_title,language:n.lia.definition.language,masteryScore:r["scorm-masteryScore"]||0,startingPage:r["scorm-iframe"]?"start.html":"index.html",startingParameters:r["scorm-iframe"]||r.embed?void 0:r.readme,source:t.join(e,"pro"),package:{version:n.lia.definition.version,appendTimeToOutput:!1,date:"",filename:t.basename(r.output+".zip"),zip:!0,name:t.basename(r.output),author:n.lia.definition.author,outputFolder:t.dirname(r.output),description:n.lia.comment,typicalDuration:r["scorm-typicalDuration"]||"PT0H5M0S",vcard:{author:n.lia.definition.author,org:r["scorm-organization"]||"LiaScript",mail:n.lia.definition.email}}};await l(f,function(r){console.log(r),process.exit(0)})}async function U(r,n){let e=w(),a=`file://${e}/assets/pdf/index.html?`;x(r.input)?a+=r.input:a+="file://"+t.resolve(r.input);let u=await d.launch({pipe:!0,args:["--disable-web-security","--disable-features=IsolateOrigins","--disable-site-isolation-trials","--unhandled-rejections=strict","--disable-features=BlockInsecurePrivateNetworkRequests"],headless:!r["pdf-preview"]&&"new"}),o=await u.newPage();console.warn("depending on the size of the course, this can take a while, please be patient..."),o.on("dialog",async r=>{console.log(r.type()),console.log(r.message()),await r.accept()});try{await o.goto(a,{waitUntil:"networkidle2",timeout:0})}catch(r){console.warn("pdf generation failed:",r)}if(r["pdf-stylesheet"]){let n=t.resolve(e+"/../",r["pdf-stylesheet"]);await o.evaluate(async r=>{let n=document.createElement("link");n.rel="stylesheet",n.href=r;let e=new Promise((r,e)=>{n.onload=r,n.onerror=e});document.head.appendChild(n),await e},n)}if(r["pdf-theme"]&&await o.evaluate(async r=>{document.documentElement.classList.remove("lia-theme-default"),document.documentElement.classList.add("lia-theme-"+r)},r["pdf-theme"]),!r["pdf-preview"]){var i;await (i=r["pdf-timeout"]||3e4,new Promise(r=>setTimeout(r,i))),await _(r,u,o)}}async function _(r,n,e){try{await e.emulateMediaType("screen"),await e.pdf({path:r.output+".pdf",format:r["pdf-format"]||"a4",printBackground:r["pdf-printBackground"]||!0,displayHeaderFooter:r["pdf-displayHeaderFooter"]||!1,margin:{top:r["pdf-margin-top"]||80,bottom:r["pdf-margin-bottom"]||80,left:r["pdf-margin-left"]||30,right:r["pdf-margin-right"]||30},scale:r["pdf-scale"]||1,headerTemplate:r["pdf-headerTemplate"],footerTemplate:r["pdf-footerTemplate"]||"",landscape:r["pdf-landscape"]||!1,width:r["pdf-width"]||"",height:r["pdf-height"]||"",omitBackground:r["pdf-omitBackground"]||!1})}catch(r){console.warn("failed to print to pdf",r)}await n.close()}async function M(r,n){let e=w(),u=await v(),o=t.join(u,"pro");await a.copy(t.join(e,r["ims-indexeddb"]?"./assets/indexeddb":"./assets/web"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i));try{await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}if(await P(o,n.lia),await a.copy(r.path,o,{filter:y(r.path)}),r["ims-indexeddb"]){let n=j(20)+".md",e=t.join(o,r.readme),u=t.join(t.dirname(e),n);r.readme=r.readme.replace(t.basename(r.readme),n),await a.move(e,u)}let c=await T(r,n);await q(o,"start.html",r.readme,c,r.style),await S(o,r.output)}async function P(r,n){let e="";try{let r=n.definition.macro.tags.split(",").map(r=>r.trim());for(let t=0;t<r.length;t++)e+=`<imsmd:langstring xml:lang="${n.definition.language}">${r[t]}</imsmd:langstring>`}catch(r){}await D(t.join(r,"imsmanifest.xml"),`<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2"
31
+ </script>`,i);try{i=i.replace("<title>Lia</title>",`<title>${n.lia.str_title}</title><meta property="og:title" content="${n.lia.str_title}"> <meta name="twitter:title" content="${n.lia.str_title}">`),console.log("updating title ...")}catch(r){console.warn("could not add title")}try{let r=n.lia.definition.macro.comment;i=i.replace('<meta name="description" content="LiaScript is a service for running free and interactive online courses, build with its own Markup-language. So check out the following course ;-)">',`<meta name="description" content="${r}"><meta property="og:description" content="${r}"><meta name="twitter:description" content="${r}">`),console.log("updating description ...")}catch(r){console.warn("could not add description")}try{let r=n.lia.definition.logo;i=k(`<meta property="og:image" content="${r}"><meta name="twitter:image" content="${r}">`,i),console.log("updating logo ...")}catch(r){console.warn("could not add image")}let c=await T(r,n);try{r["web-iframe"]?(await D(t.join(o,"start.html"),i),await q(o,"index.html",r.readme,c,r.style,"start.html")):(i=k(c,i),i=A(i),await D(t.join(o,"index.html"),i))}catch(r){console.warn(r);return}r["web-zip"]?S(o,r.output):await a.move(o,r.output,{filter:y(r.path)})}async function z(r,n){let e=await v(),u=w(),o=t.join(e,"pro");await a.copy(t.join(u,"./assets/scorm1.2"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i)),i=k('<script src="config.js"></script>',i),await D(t.join(o,"config.js"),"window.config_ = "+JSON.stringify({task:n.task,quiz:n.quiz,survey:n.survey})+";");let c=await T(r,n);r["scorm-iframe"]&&await q(o,"start.html",r.readme,c,r.style),r["scorm-embed"]&&(i=k('<script src="course.js"></script>',i,!0),await D(t.join(o,"course.js"),'window["liascript_course"] = '+JSON.stringify(r["scorm-embed"])));try{i=k(c,i),await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}await a.copy(r.path,o,{filter:y(r.path)});let s={version:"1.2",organization:r["scorm-organization"]||"LiaScript",title:n.lia.str_title,language:n.lia.definition.language,masteryScore:r["scorm-masteryScore"]||0,startingPage:r["scorm-iframe"]?"start.html":"index.html",startingParameters:r["scorm-iframe"]||r.embed?void 0:r.readme,source:t.join(e,"pro"),package:{version:n.lia.definition.version,zip:!0,appendTimeToOutput:!1,name:t.basename(r.output),author:n.lia.definition.author,outputFolder:t.dirname(r.output),filename:t.basename(r.output+".zip"),description:n.lia.comment,typicalDuration:r["scorm-typicalDuration"]||"PT0H5M0S",vcard:{author:n.lia.definition.author,org:r["scorm-organization"]||"LiaScript",mail:n.lia.definition.email}}};await l(s)}async function B(r,n){let e=await v(),u=w(),o=t.join(e,"pro");await a.copy(t.join(u,"./assets/scorm2004"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i)),i=k('<script src="config.js"></script>',i);let c="window.config_ = "+JSON.stringify({task:n.task,quiz:n.quiz,survey:n.survey})+";";r["scorm-alwaysActive"]&&(c+='\n\nwindow["ACTIVE"] = true;',r["scorm-masteryScore"]&&(c+='\n\nwindow["MASTERY_SCORE"] ='+parseFloat(r["scorm-masteryScore"])/100)),await D(t.join(o,"config.js"),c);let s=await T(r,n);r["scorm-iframe"]&&await q(o,"start.html",r.readme,s,r.style),r["scorm-embed"]&&(i=k('<script src="course.js"></script>',i,!0),await D(t.join(o,"course.js"),'window["liascript_course"] = '+JSON.stringify(r["scorm-embed"])));try{i=k(s,i),await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}await a.copy(r.path,o,{filter:y(r.path)});let f={version:"2004 4th Edition",organization:r["scorm-organization"]||"LiaScript",title:n.lia.str_title,language:n.lia.definition.language,masteryScore:r["scorm-masteryScore"]||0,startingPage:r["scorm-iframe"]?"start.html":"index.html",startingParameters:r["scorm-iframe"]||r.embed?void 0:r.readme,source:t.join(e,"pro"),package:{version:n.lia.definition.version,appendTimeToOutput:!1,date:"",filename:t.basename(r.output+".zip"),zip:!0,name:t.basename(r.output),author:n.lia.definition.author,outputFolder:t.dirname(r.output),description:n.lia.comment,typicalDuration:r["scorm-typicalDuration"]||"PT0H5M0S",vcard:{author:n.lia.definition.author,org:r["scorm-organization"]||"LiaScript",mail:n.lia.definition.email}}};await l(f,function(r){console.log(r),process.exit(0)})}async function U(r,n){let e=w(),a=`file://${e}/assets/pdf/index.html?`;x(r.input)?a+=r.input:a+="file://"+t.resolve(r.input);let u=await m(d).launch({pipe:!0,args:["--disable-web-security","--disable-features=IsolateOrigins","--disable-site-isolation-trials","--unhandled-rejections=strict","--disable-features=BlockInsecurePrivateNetworkRequests"],headless:!r["pdf-preview"]&&"new"}),o=await u.newPage();console.warn("depending on the size of the course, this can take a while, please be patient..."),o.on("dialog",async r=>{console.log(r.type()),console.log(r.message()),await r.accept()});try{await o.goto(a,{waitUntil:"networkidle2",timeout:0})}catch(r){console.warn("pdf generation failed:",r)}if(r["pdf-stylesheet"]){let n=t.resolve(e+"/../",r["pdf-stylesheet"]);await o.evaluate(async r=>{let n=document.createElement("link");n.rel="stylesheet",n.href=r;let e=new Promise((r,e)=>{n.onload=r,n.onerror=e});document.head.appendChild(n),await e},n)}if(r["pdf-theme"]&&await o.evaluate(async r=>{document.documentElement.classList.remove("lia-theme-default"),document.documentElement.classList.add("lia-theme-"+r)},r["pdf-theme"]),!r["pdf-preview"]){var i;await (i=r["pdf-timeout"]||3e4,new Promise(r=>setTimeout(r,i))),await _(r,u,o)}}async function _(r,n,e){try{await e.emulateMediaType("screen"),await e.pdf({path:r.output+".pdf",format:r["pdf-format"]||"a4",printBackground:r["pdf-printBackground"]||!0,displayHeaderFooter:r["pdf-displayHeaderFooter"]||!1,margin:{top:r["pdf-margin-top"]||80,bottom:r["pdf-margin-bottom"]||80,left:r["pdf-margin-left"]||30,right:r["pdf-margin-right"]||30},scale:r["pdf-scale"]||1,headerTemplate:r["pdf-headerTemplate"],footerTemplate:r["pdf-footerTemplate"]||"",landscape:r["pdf-landscape"]||!1,width:r["pdf-width"]||"",height:r["pdf-height"]||"",omitBackground:r["pdf-omitBackground"]||!1})}catch(r){console.warn("failed to print to pdf",r)}await n.close()}async function M(r,n){let e=w(),u=await v(),o=t.join(u,"pro");await a.copy(t.join(e,r["ims-indexeddb"]?"./assets/indexeddb":"./assets/web"),o);let i=a.readFileSync(t.join(o,"index.html"),"utf8");r.key&&(i=$(r.key,i));try{await D(t.join(o,"index.html"),i)}catch(r){console.warn(r);return}if(await P(o,n.lia),await a.copy(r.path,o,{filter:y(r.path)}),r["ims-indexeddb"]){let n=j(20)+".md",e=t.join(o,r.readme),u=t.join(t.dirname(e),n);r.readme=r.readme.replace(t.basename(r.readme),n),await a.move(e,u)}let c=await T(r,n);await q(o,"start.html",r.readme,c,r.style),await S(o,r.output)}async function P(r,n){let e="";try{let r=n.definition.macro.tags.split(",").map(r=>r.trim());for(let t=0;t<r.length;t++)e+=`<imsmd:langstring xml:lang="${n.definition.language}">${r[t]}</imsmd:langstring>`}catch(r){}await D(t.join(r,"imsmanifest.xml"),`<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2"
32
32
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
33
  xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 http://www.imsglobal.org/xsd/imscp_v1p1.xsd http://www.imsglobal.org/xsd/imsmd_v1p2 http://www.imsglobal.org/xsd/imsmd_v1p2.xsd "
34
34
  identifier="Manifest5-CEC3D3-3201-DF8E-8F42-3CEED12F4197" version="IMS CP 1.1.4">
@@ -202,4 +202,4 @@ var r,n=require("xhr2"),e=require("yaml"),t=require("path"),a=require("fs-extra"
202
202
  ${s}
203
203
  </div>
204
204
  ${f}
205
- </div>`}p.XMLHttpRequest=n;const rt=u(process.argv.slice(2));async function ra(n){var t=(0,g.Elm).Worker.init({flags:{cmd:""}}),u=void 0;t.ports.output.subscribe(function(e){let[o,i]=e;if(!o){console.warn(i);return}switch(n.format){case"json":case"fulljson":a.writeFile(n.output+".json",i,function(r){r&&console.error(r)});break;case"rdf":C(n,JSON.parse(i));break;case"scorm1.2":n["scorm-embed"]&&(n["scorm-embed"]=u),z(n,JSON.parse(i));break;case"scorm2004":n["scorm-embed"]&&(n["scorm-embed"]=u),B(n,JSON.parse(i));break;case"ims":M(n,JSON.parse(i));break;case"web":O(n,JSON.parse(i));break;case"pdf":U(n,JSON.parse(i));break;case"android":H(n,JSON.parse(i));break;case"project":if(r)try{!function(r,n){r.collection&&(r=r.collection);for(let e=0;e<r.length;e++)if(r[e].collection){for(let t=0;t<r[e].collection.length;t++)if(r[e].collection[t].url&&void 0===r[e].collection[t].data){r[e].collection[t].data=n;return}}else if(r[e].url&&void 0===r[e].data){r[e].data=n;break}}(r,JSON.parse(i));let e=Y(r);e?(console.warn("loading:",e),t.ports.input.send(["fulljson",e])):X(n,r)}catch(r){console.warn("project export error:",r)}break;default:console.warn("unknown output format",n.format)}});try{let i="scorm1.2"==n.format||"scorm2004"==n.format||"pdf"==n.format||"web"==n.format||"ims"==n.format||"android"==n.format||"ios"==n.format||"rdf"==n.format||"project"==n.format?"fulljson":n.format;if("project"===n.format){let u=a.readFileSync(n.input,"utf8");if(r=m(e).parse(u)){let e=Y(r);null===e?X(n,r):(console.warn("loading:",e),t.ports.input.send([i,e]))}}else if(x(n.input)){if("pdf"===n.format)U(n,{});else if("rdf"===n.format){let r=await m(o)(n.input,{}),e=await r.text();e&&t.ports.input.send([i,e])}else console.warn("URLs are not allowed as input")}else{let r=a.readFileSync(n.input,"utf8");u=r,t.ports.input.send([i,r])}}catch(r){console.error(r)}}function ru(){console.log("LiaScript-Exporter"),console.log(""),console.log("-h","--help"," show this help"),console.log("-i","--input"," file to be used as input"),console.log("-p","--path"," path to be packed, if not set, the path of the input file is used"),console.log("-o","--output"," output file name (default is output), the ending is define by the format"),console.log("-s","--style",' additional styling to passed to the export, can be used for fixes, such as "height: 100vh; width: 100%; border: 2px;"'),console.log("-f","--format"," scorm1.2, scorm2004, json, fullJson, web, ims, pdf, android, linkedData (default is json)"),console.log("-v","--version"," output the current version"),console.log("\n-k","--key"," responsive voice key "),console.log("\nSCORM settings:\n"),console.log("--scorm-organization"," set the organization title"),console.log("--scorm-masteryScore"," set the scorm masteryScore (a value between 0 -- 100), default is 0"),console.log("--scorm-typicalDuration"," set the scorm duration, default is PT0H5M0S"),console.log("--scorm-iframe"," use an iframe, when a SCORM starting parameter is not working"),console.log("--scorm-embed"," embed the Markdown into the JS code, use in Moodle 4 to handle restrictions with dynamic loading"),console.log("\nIMS settings:"),console.log(""),console.log("--ims-indexeddb"," Use IndexedDB to store data persistently"),console.log("\nWEB settings:"),console.log(""),console.log("--web-iframe Use an iframed version to hide the course URL."),console.log("--web-indexeddb This will allow to store data within the browser using indexeddb, you can optionally pass a unique key (by default one is generated randomly)."),console.log("--web-zip By default the result is not zipped, you can change this with this parameter."),console.log("\nAndroid settings:"),console.log(""),console.log("--android-sdk Specify sdk.dir which is required for building."),console.log("--android-appName Name of the App (Main-title is used as default)."),console.log("--android-appId Required to identify your App reverse url such as io.github.liascript"),console.log("--android-icon Optional icon with 1024x1024 px"),console.log("--android-splash Optional splash image with 2732x2732 px"),console.log("--android-splashDuration Duration for splash-screen default 0 milliseconds"),console.log("--android-preview Open course in Android-Studio"),console.log("\nPDF settings:\n"),console.log("--pdf-stylesheet Inject an local CSS for changing the appearance."),console.log("--pdf-theme LiaScript themes: default, turquoise, blue, red, yellow"),console.log("--pdf-timeout Set an additional time horizon to wait until finished."),console.log("\nhttps://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagepdfoptions\n"),console.log("--pdf-preview Open preview-browser (default false), print not possible"),console.log("--pdf-scale Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2."),console.log("--pdf-displayHeaderFooter Display header and footer. Defaults to false."),console.log("--pdf-headerTemplate HTML template for the print header, inject classes date, title, url, pageNumber, totalPages"),console.log("--pdf-footerTemplate HTML template for the print footer. Should use the same format as the headerTemplate"),console.log("--pdf-printBackground Print background graphics. Defaults to false"),console.log("--pdf-landscape Paper orientation. Defaults to false."),console.log('--pdf-pageRanges Paper ranges to print, e.g., "1-5, 8, 11-13"'),console.log("--pdf-format Paper format. If set, takes priority over width or height options. Defaults to a4."),console.log("--pdf-width Paper width, accepts values labeled with units."),console.log("--pdf-height Paper height, accepts values labeled with units."),console.log("--pdf-margin-top Top margin, accepts values labeled with units."),console.log("--pdf-margin-right Right margin, accepts values labeled with units."),console.log("--pdf-margin-bottom Bottom margin, accepts values labeled with units."),console.log("--pdf-margin-left Left margin, accepts values labeled with units. "),console.log("--pdf-preferCSSPageSize Give any CSS @page size declared in the page priority over what is declared in width and height or format options."),console.log("--pdf-omitBackground Hides default white background and allows capturing screenshots with transparency. Defaults to true. "),console.log("\nProject settings:"),console.log(""),console.log("--project-no-meta Disable the generation of meta information for OpenGraph and Twitter-cards."),console.log("--project-no-rdf Disable the generation of json-ld."),console.log("--project-no-categories Disable the filter for categories/tags."),console.log("--project-category-blur Enable this and the categories will be blurred instead of deleted."),console.log("--project-generate-scrom12 SCORM12 and pass additional scrom settings."),console.log("--project-generate-scrom2004 SCORM2004 and pass additional scrom settings."),console.log("--project-generate-ims IMS resources with additional config settings."),console.log("--project-generate-pdf PDFs are automatically generated and added to every card."),console.log("--project-generate-cache Only generate new files, if they do not exist."),console.log("\nRDF settings:"),console.log(""),console.log("--rdf-format Output format n-quads, json-ld (defaults to json-ld)."),console.log("--rdf-preview Output the result to the console."),console.log("--rdf-url Refer to an external URL when parsing a local project."),console.log("--rdf-type Course frm schmema.org is applied as default, overwrite this with EducationalResource, etc."),console.log("--rdf-license Add a license-URL, otherwise if url was provided as input, this will check for an existing LICENSE file."),console.log("--rdf-educationalLevel Typically beginner, intermediate or advanced, and formal sets of level indicators."),console.log("--rdf-template Use a URL or json-file as a template.")}function ro(r){return r?r.replace(/\\/g,"\\\\"):r}rt.v||rt.version?console.log("version: 2.6.27--0.14.4"):rt.h||rt.help?ru():rt.i||rt.input?ra(function(){let r={input:rt.i||rt.input,readme:rt.i||rt.input,output:rt.o||rt.output||"output",format:rt.f||rt.format||"json",path:rt.p||rt.path,key:rt.k||rt.key,style:rt.s||rt.style,"scorm-organization":rt["scorm-organization"],"scorm-masteryScore":rt["scorm-masteryScore"],"scorm-typicalDuration":rt["scorm-typicalDuration"],"scorm-iframe":rt["scorm-iframe"],"scorm-embed":rt["scorm-embed"],"scorm-alwaysActive":rt["scorm-alwaysActive"],"ims-indexeddb":rt["ims-indexeddb"],"web-zip":rt["web-zip"],"web-indexeddb":rt["web-indexeddb"],"web-iframe":rt["web-iframe"],"pdf-preview":rt["pdf-preview"],"pdf-scale":rt["pdf-scale"],"pdf-displayHeaderFooter":rt["pdf-displayHeaderFooter"],"pdf-headerTemplate":rt["pdf-headerTemplate"],"pdf-footerTemplate":rt["pdf-footerTemplate"],"pdf-printBackground":rt["pdf-printBackground"],"pdf-landscape":rt["pdf-landscape"],"pdf-format":rt["pdf-format"]||"A4","pdf-width":rt["pdf-width"],"pdf-height":rt["pdf-height"],"pdf-margin-top":rt["pdf-margin-top"],"pdf-margin-bottom":rt["pdf-margin-bottom"],"pdf-margin-right":rt["pdf-margin-right"],"pdf-margin-left":rt["pdf-margin-left"],"pdf-preferCSSPageSize":rt["pdf-preferCSSPageSize"],"pdf-omitBackground":rt["pdf-omitBackground"],"pdf-timeout":rt["pdf-timeout"],"pdf-stylesheet":rt["pdf-stylesheet"],"pdf-theme":rt["pdf-theme"],"android-sdk":ro(rt["android-sdk"]),"android-appId":rt["android-appId"],"android-appName":rt["android-appName"],"android-icon":ro(rt["android-icon"]),"android-splash":ro(rt["android-splash"]),"android-splashDuration":rt["android-splashDuration"],"android-preview":rt["android-preview"],"project-no-meta":rt["project-no-meta"],"project-no-rdf":rt["project-no-rdf"],"project-no-categories":rt["project-no-categories"],"project-category-blur":rt["project-category-blur"],"project-generate-pdf":rt["project-generate-pdf"],"project-generate-ims":rt["project-generate-ims"],"project-generate-scorm12":rt["project-generate-scorm12"],"project-generate-scorm2004":rt["project-generate-scorm2004"],"project-generate-android":rt["project-generate-android"],"project-generate-cache":rt["project-generate-cache"],"rdf-format":rt["rdf-format"],"rdf-preview":rt["rdf-preview"],"rdf-url":rt["rdf-url"],"rdf-type":rt["rdf-type"],"rdf-license":rt["rdf-license"],"rdf-educationalLevel":rt["rdf-educationalLevel"],"rdf-template":rt["rdf-template"]};return r.format=r.format.toLowerCase(),"android"!=r.format||(r["android-sdk"]||(console.warn("Path to SDK has to be defined, you will have to install:"),console.warn("https://developer.android.com/studio/"),process.exit(1)),r["android-appId"]||(console.warn("The appId has to provided to uniquely identify your App."),console.warn("This can be the URL of your site in reverse order, eg.:"),console.warn("io.github.liascript"),process.exit(1))),r.path||x(r.input)||(r.path=t.dirname(r.input)),r.readme=r.input.replace(r.path,"."),r}()):(console.warn("No input defined"),ru());
205
+ </div>`}p.XMLHttpRequest=n;const rt=u(process.argv.slice(2));async function ra(n){var t=(0,g.Elm).Worker.init({flags:{cmd:""}}),u=void 0;t.ports.output.subscribe(function(e){let[o,i]=e;if(!o){console.warn(i);return}switch(n.format){case"json":case"fulljson":a.writeFile(n.output+".json",i,function(r){r&&console.error(r)});break;case"rdf":C(n,JSON.parse(i));break;case"scorm1.2":n["scorm-embed"]&&(n["scorm-embed"]=u),z(n,JSON.parse(i));break;case"scorm2004":n["scorm-embed"]&&(n["scorm-embed"]=u),B(n,JSON.parse(i));break;case"ims":M(n,JSON.parse(i));break;case"web":O(n,JSON.parse(i));break;case"pdf":U(n,JSON.parse(i));break;case"android":H(n,JSON.parse(i));break;case"project":if(r)try{!function(r,n){r.collection&&(r=r.collection);for(let e=0;e<r.length;e++)if(r[e].collection){for(let t=0;t<r[e].collection.length;t++)if(r[e].collection[t].url&&void 0===r[e].collection[t].data){r[e].collection[t].data=n;return}}else if(r[e].url&&void 0===r[e].data){r[e].data=n;break}}(r,JSON.parse(i));let e=Y(r);e?(console.warn("loading:",e),t.ports.input.send(["fulljson",e])):X(n,r)}catch(r){console.warn("project export error:",r)}break;default:console.warn("unknown output format",n.format)}});try{let i="scorm1.2"==n.format||"scorm2004"==n.format||"pdf"==n.format||"web"==n.format||"ims"==n.format||"android"==n.format||"ios"==n.format||"rdf"==n.format||"project"==n.format?"fulljson":n.format;if("project"===n.format){let u=a.readFileSync(n.input,"utf8");if(r=m(e).parse(u)){let e=Y(r);null===e?X(n,r):(console.warn("loading:",e),t.ports.input.send([i,e]))}}else if(x(n.input)){if("pdf"===n.format)U(n,{});else if("rdf"===n.format){let r=await m(o)(n.input,{}),e=await r.text();e&&t.ports.input.send([i,e])}else console.warn("URLs are not allowed as input")}else{let r=a.readFileSync(n.input,"utf8");u=r,t.ports.input.send([i,r])}}catch(r){console.error(r)}}function ru(){console.log("LiaScript-Exporter"),console.log(""),console.log("-h","--help"," show this help"),console.log("-i","--input"," file to be used as input"),console.log("-p","--path"," path to be packed, if not set, the path of the input file is used"),console.log("-o","--output"," output file name (default is output), the ending is define by the format"),console.log("-s","--style",' additional styling to passed to the export, can be used for fixes, such as "height: 100vh; width: 100%; border: 2px;"'),console.log("-f","--format"," scorm1.2, scorm2004, json, fullJson, web, ims, pdf, android, linkedData (default is json)"),console.log("-v","--version"," output the current version"),console.log("\n-k","--key"," responsive voice key "),console.log("\nSCORM settings:\n"),console.log("--scorm-organization"," set the organization title"),console.log("--scorm-masteryScore"," set the scorm masteryScore (a value between 0 -- 100), default is 0"),console.log("--scorm-typicalDuration"," set the scorm duration, default is PT0H5M0S"),console.log("--scorm-iframe"," use an iframe, when a SCORM starting parameter is not working"),console.log("--scorm-embed"," embed the Markdown into the JS code, use in Moodle 4 to handle restrictions with dynamic loading"),console.log("\nIMS settings:"),console.log(""),console.log("--ims-indexeddb"," Use IndexedDB to store data persistently"),console.log("\nWEB settings:"),console.log(""),console.log("--web-iframe Use an iframed version to hide the course URL."),console.log("--web-indexeddb This will allow to store data within the browser using indexeddb, you can optionally pass a unique key (by default one is generated randomly)."),console.log("--web-zip By default the result is not zipped, you can change this with this parameter."),console.log("\nAndroid settings:"),console.log(""),console.log("--android-sdk Specify sdk.dir which is required for building."),console.log("--android-appName Name of the App (Main-title is used as default)."),console.log("--android-appId Required to identify your App reverse url such as io.github.liascript"),console.log("--android-icon Optional icon with 1024x1024 px"),console.log("--android-splash Optional splash image with 2732x2732 px"),console.log("--android-splashDuration Duration for splash-screen default 0 milliseconds"),console.log("--android-preview Open course in Android-Studio"),console.log("\nPDF settings:\n"),console.log("--pdf-stylesheet Inject an local CSS for changing the appearance."),console.log("--pdf-theme LiaScript themes: default, turquoise, blue, red, yellow"),console.log("--pdf-timeout Set an additional time horizon to wait until finished."),console.log("\nhttps://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagepdfoptions\n"),console.log("--pdf-preview Open preview-browser (default false), print not possible"),console.log("--pdf-scale Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2."),console.log("--pdf-displayHeaderFooter Display header and footer. Defaults to false."),console.log("--pdf-headerTemplate HTML template for the print header, inject classes date, title, url, pageNumber, totalPages"),console.log("--pdf-footerTemplate HTML template for the print footer. Should use the same format as the headerTemplate"),console.log("--pdf-printBackground Print background graphics. Defaults to false"),console.log("--pdf-landscape Paper orientation. Defaults to false."),console.log('--pdf-pageRanges Paper ranges to print, e.g., "1-5, 8, 11-13"'),console.log("--pdf-format Paper format. If set, takes priority over width or height options. Defaults to a4."),console.log("--pdf-width Paper width, accepts values labeled with units."),console.log("--pdf-height Paper height, accepts values labeled with units."),console.log("--pdf-margin-top Top margin, accepts values labeled with units."),console.log("--pdf-margin-right Right margin, accepts values labeled with units."),console.log("--pdf-margin-bottom Bottom margin, accepts values labeled with units."),console.log("--pdf-margin-left Left margin, accepts values labeled with units. "),console.log("--pdf-preferCSSPageSize Give any CSS @page size declared in the page priority over what is declared in width and height or format options."),console.log("--pdf-omitBackground Hides default white background and allows capturing screenshots with transparency. Defaults to true. "),console.log("\nProject settings:"),console.log(""),console.log("--project-no-meta Disable the generation of meta information for OpenGraph and Twitter-cards."),console.log("--project-no-rdf Disable the generation of json-ld."),console.log("--project-no-categories Disable the filter for categories/tags."),console.log("--project-category-blur Enable this and the categories will be blurred instead of deleted."),console.log("--project-generate-scrom12 SCORM12 and pass additional scrom settings."),console.log("--project-generate-scrom2004 SCORM2004 and pass additional scrom settings."),console.log("--project-generate-ims IMS resources with additional config settings."),console.log("--project-generate-pdf PDFs are automatically generated and added to every card."),console.log("--project-generate-cache Only generate new files, if they do not exist."),console.log("\nRDF settings:"),console.log(""),console.log("--rdf-format Output format n-quads, json-ld (defaults to json-ld)."),console.log("--rdf-preview Output the result to the console."),console.log("--rdf-url Refer to an external URL when parsing a local project."),console.log("--rdf-type Course frm schmema.org is applied as default, overwrite this with EducationalResource, etc."),console.log("--rdf-license Add a license-URL, otherwise if url was provided as input, this will check for an existing LICENSE file."),console.log("--rdf-educationalLevel Typically beginner, intermediate or advanced, and formal sets of level indicators."),console.log("--rdf-template Use a URL or json-file as a template.")}function ro(r){return r?r.replace(/\\/g,"\\\\"):r}rt.v||rt.version?console.log("version: 2.6.28--0.14.4"):rt.h||rt.help?ru():rt.i||rt.input?ra(function(){let r={input:rt.i||rt.input,readme:rt.i||rt.input,output:rt.o||rt.output||"output",format:rt.f||rt.format||"json",path:rt.p||rt.path,key:rt.k||rt.key,style:rt.s||rt.style,"scorm-organization":rt["scorm-organization"],"scorm-masteryScore":rt["scorm-masteryScore"],"scorm-typicalDuration":rt["scorm-typicalDuration"],"scorm-iframe":rt["scorm-iframe"],"scorm-embed":rt["scorm-embed"],"scorm-alwaysActive":rt["scorm-alwaysActive"],"ims-indexeddb":rt["ims-indexeddb"],"web-zip":rt["web-zip"],"web-indexeddb":rt["web-indexeddb"],"web-iframe":rt["web-iframe"],"pdf-preview":rt["pdf-preview"],"pdf-scale":rt["pdf-scale"],"pdf-displayHeaderFooter":rt["pdf-displayHeaderFooter"],"pdf-headerTemplate":rt["pdf-headerTemplate"],"pdf-footerTemplate":rt["pdf-footerTemplate"],"pdf-printBackground":rt["pdf-printBackground"],"pdf-landscape":rt["pdf-landscape"],"pdf-format":rt["pdf-format"]||"A4","pdf-width":rt["pdf-width"],"pdf-height":rt["pdf-height"],"pdf-margin-top":rt["pdf-margin-top"],"pdf-margin-bottom":rt["pdf-margin-bottom"],"pdf-margin-right":rt["pdf-margin-right"],"pdf-margin-left":rt["pdf-margin-left"],"pdf-preferCSSPageSize":rt["pdf-preferCSSPageSize"],"pdf-omitBackground":rt["pdf-omitBackground"],"pdf-timeout":rt["pdf-timeout"],"pdf-stylesheet":rt["pdf-stylesheet"],"pdf-theme":rt["pdf-theme"],"android-sdk":ro(rt["android-sdk"]),"android-appId":rt["android-appId"],"android-appName":rt["android-appName"],"android-icon":ro(rt["android-icon"]),"android-splash":ro(rt["android-splash"]),"android-splashDuration":rt["android-splashDuration"],"android-preview":rt["android-preview"],"project-no-meta":rt["project-no-meta"],"project-no-rdf":rt["project-no-rdf"],"project-no-categories":rt["project-no-categories"],"project-category-blur":rt["project-category-blur"],"project-generate-pdf":rt["project-generate-pdf"],"project-generate-ims":rt["project-generate-ims"],"project-generate-scorm12":rt["project-generate-scorm12"],"project-generate-scorm2004":rt["project-generate-scorm2004"],"project-generate-android":rt["project-generate-android"],"project-generate-cache":rt["project-generate-cache"],"rdf-format":rt["rdf-format"],"rdf-preview":rt["rdf-preview"],"rdf-url":rt["rdf-url"],"rdf-type":rt["rdf-type"],"rdf-license":rt["rdf-license"],"rdf-educationalLevel":rt["rdf-educationalLevel"],"rdf-template":rt["rdf-template"]};return r.format=r.format.toLowerCase(),"android"!=r.format||(r["android-sdk"]||(console.warn("Path to SDK has to be defined, you will have to install:"),console.warn("https://developer.android.com/studio/"),process.exit(1)),r["android-appId"]||(console.warn("The appId has to provided to uniquely identify your App."),console.warn("This can be the URL of your site in reverse order, eg.:"),console.warn("io.github.liascript"),process.exit(1))),r.path||x(r.input)||(r.path=t.dirname(r.input)),r.readme=r.input.replace(r.path,"."),r}()):(console.warn("No input defined"),ru());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liascript/exporter",
3
- "version": "2.6.27--0.14.4",
3
+ "version": "2.6.28--0.14.4",
4
4
  "description": "A generic exporter for LiaScript",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -18,7 +18,6 @@
18
18
  },
19
19
  "preferGlobal": true,
20
20
  "scripts": {
21
- "postinstall": "npm install puppeteer",
22
21
  "__preinstall": "cd LiaScript && npm i && npm run build:scorm1.2 && cp -r dist ../assets/scorm1.2",
23
22
  "build:assets": "npm run clean && npm run asset:scorm1.2 && npm run asset:scorm2004 && npm run asset:web && npm run asset:indexeddb && npm run asset:pdf && npm run asset:capacitor && npm run asset:logo",
24
23
  "clean": "rm -rf dist/assets/*",
@@ -53,7 +52,7 @@
53
52
  "minimist": "^1.2.5",
54
53
  "node-fetch": "^2.6.9",
55
54
  "path": "^0.12.7",
56
- "puppeteer": "^22.0.0",
55
+ "puppeteer": "^22.1.0",
57
56
  "simply-beautiful": "^0.2.14",
58
57
  "temp": "^0.9.4",
59
58
  "xhr2": "^0.2.1",
package/src/export/pdf.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as helper from './helper'
2
2
 
3
3
  const path = require('path')
4
- const puppeteer = require('puppeteer')
4
+ import puppeteer from 'puppeteer'
5
5
 
6
6
  export function help() {
7
7
  console.log('\nPDF settings:\n')
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@ import fetch from 'node-fetch'
22
22
 
23
23
  // -------------------------------Main Execution-------------------------------
24
24
  if (argv.v || argv.version) {
25
- console.log('version: 2.6.27--0.14.4')
25
+ console.log('version: 2.6.28--0.14.4')
26
26
  } else if (argv.h || argv.help) {
27
27
  help()
28
28
  } else if (argv.i || argv.input) {