{"id":13607451,"url":"https://github.com/mspgeek/labtech-script-decode","last_synced_at":"2025-04-12T11:32:44.100Z","repository":{"id":25916393,"uuid":"106887238","full_name":"mspgeek/labtech-script-decode","owner":"mspgeek","description":"A set of utilities to decode and encode LT Script XML files to and from JSON.","archived":false,"fork":false,"pushed_at":"2023-04-19T07:24:00.000Z","size":2955,"stargazers_count":26,"open_issues_count":8,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-09T13:43:48.296Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mspgeek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-10-14T01:09:01.000Z","updated_at":"2024-04-29T16:54:47.000Z","dependencies_parsed_at":"2024-01-14T06:23:03.971Z","dependency_job_id":"6f925be4-c012-43da-961f-983385a9b3b2","html_url":"https://github.com/mspgeek/labtech-script-decode","commit_stats":null,"previous_names":["k-grube/labtech-script-decode"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspgeek%2Flabtech-script-decode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspgeek%2Flabtech-script-decode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspgeek%2Flabtech-script-decode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspgeek%2Flabtech-script-decode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mspgeek","download_url":"https://codeload.github.com/mspgeek/labtech-script-decode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223514326,"owners_count":17158165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:18.729Z","updated_at":"2024-11-07T12:32:25.742Z","avatar_url":"https://github.com/mspgeek.png","language":"JavaScript","readme":"## labtech-script-decode\n\nA set of utilities to load, parse, encode and interpolate exported LabTech scripts from XML into JSON and from JSON to XML.   This module will run in the browser or on the server.   \n \n\n## Installation\n\n```\nnpm install --save labtech-script-decode\n```\n\n## Usage\n\n### Server\n```javascript\nconst labtech_script = require('labtech-script-decode');\n\nlabtech_script.decodeXML(scriptXML).then(scriptJSON =\u003e {})\n\nlabtech_script.decode(base64string).then()\n```\n\n### Browser\n\nInclude using Webpack, Browserify, etc, or directly using a script tag:\n\n```html\n\u003cscript src=\"/dist/labtech-script-decode.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  labtech_script.decodeXML(scriptXML)\n    .then(scriptJSON =\u003e {\n      // scriptJSON\n    })\n\u003c/script\u003e\n```\n\n## Documentation\n\nScript functions and their associated [documentation](https://github.com/k-grube/labtech-script-decode/blob/master/DOC.md) for each script function. \n\n\n## Examples\n\nSee the test folder for an example decoded script [here](https://github.com/k-grube/labtech-script-decode/blob/master/test/Export%20Test.json). \n\nThis library is documented with JSDoc for exported object schema.\n\n## API\n\n### decodeXML(value)\n\nDecode and interpolate an XML string\n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | String | Exported LabTech script |\n\n**Returns**\n\nPromise ⇒ Object\\\u003cLabTechScript\\\u003e\n\n### decode(value)\n\nDecode and parse a base 64 encoded string such as ScriptData or LicenseData.  This function does not interpolate constants such as function names into decoded values.\n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | String or Array | Base 64 encoded |\n\n**Returns**\n\nPromise ⇒ Object\\\u003cParsed XML\\\u003e\n\n\n### encodeXML(object)\n\nEncode and de-interpolate object into an XML string.  The input's schema is validated to confirm that the output will produce a valid LabTech script. \n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | Object\u003cLabTech_Expansion\u003e | Packed LabTech script |\n\n**Returns**\n\nPromise ⇒ String\\\u003cXML\\\u003e\n\n### encode(object)\n\nEncode a JSON object into a base64 encoded string such as for ScriptData or LicenseData. \n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | object | |\n\n**Returns**\n\nPromise ⇒ String\u003cBase64 Encoded\u003e\n\n### interpolate(scriptData)\n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| scriptData | Object\\\u003cScriptData\\\u003e | Uninterpolated script data |\n\n**Returns**\n\nPromise ⇒ Object\\\u003cScriptData\\\u003e\n\n### toText(scriptJSON)\n\n**Arguments**\n\n| Param | Type | Description |\n| --- | --- | --- |\n| scriptJSON | LabTechScript | LabTech Script JSON returned by decodeXML |\n\n\n### Constants\n\nA helper object containing a map of ids to \n\n**Properties**\n\n| Property | Values |\n| --- | --- |\n| Actions | Function location in script |\n| Continues | Function enabled or disabled |\n| FunctionFlags | Base 10 bitstring determining target for this function |\n| FunctionTypes | If or regular function|\n| Functions | Function definitions |\n| OsLimits | Function OS limits |\n\n## Schema\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#LabTechScript\"\u003eLabTechScript\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#PackedScript\"\u003ePackedScript\u003c/a\u003e : \u003ccode\u003eArray.\u0026lt;Object\u0026gt;\u003c/code\u003e | \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptFolder\"\u003eScriptFolder\u003c/a\u003e : \u003ccode\u003eArray.\u0026lt;Object\u0026gt;\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#LicenseData\"\u003eLicenseData\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptData\"\u003eScriptData\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptStepXML\"\u003eScriptStepXML\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptStep\"\u003eScriptStep\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptFunction\"\u003eScriptFunction\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptParam\"\u003eScriptParam\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#ScriptTable\"\u003eScriptTable\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003cdt\u003e\u003ca href=\"#FolderTable\"\u003eFolderTable\u003c/a\u003e : \u003ccode\u003eObject\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003c/dl\u003e\n\n\u003ca name=\"LabTechScript\"\u003e\u003c/a\u003e\n\n### LabTechScript : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| LabTech_Expansion |  |\n| LabTech_Expansion.$ |  |\n| LabTech_Expansion.$.Name |  |\n| LabTech_Expansion.$.Type |  |\n| LabTech_Expansion.$.Version |  |\n| LabTech_Expansion.PackedScript | [\u003ccode\u003ePackedScript\u003c/code\u003e](#PackedScript) |\n\n\u003ca name=\"PackedScript\"\u003e\u003c/a\u003e\n\n### PackedScript : \u003ccode\u003eArray.\u0026lt;Object\u0026gt;\u003c/code\u003e \\| \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| NewDataSet | \u003ccode\u003eObject\u003c/code\u003e |\n| NewDataSet.Table | [\u003ccode\u003eScriptTable\u003c/code\u003e](#ScriptTable) |\n| PackedScript | [\u003ccode\u003eArray.\u0026lt;PackedScript\u0026gt;\u003c/code\u003e](#PackedScript) \\| [\u003ccode\u003ePackedScript\u003c/code\u003e](#PackedScript) |\n| ScriptFolder | [\u003ccode\u003eScriptFolder\u003c/code\u003e](#ScriptFolder) |\n\n\u003ca name=\"ScriptFolder\"\u003e\u003c/a\u003e\n\n### ScriptFolder : \u003ccode\u003eArray.\u0026lt;Object\u0026gt;\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| NewDataSet |  |\n| NewDataSet.Table | [\u003ccode\u003eFolderTable\u003c/code\u003e](#FolderTable) |\n\n\u003ca name=\"LicenseData\"\u003e\u003c/a\u003e\n\n### LicenseData : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name |\n| --- |\n| ExpireDate |\n| RunCounter |\n| ScriptGuid |\n| ScriptVersion |\n| Type |\n\n\u003ca name=\"ScriptData\"\u003e\u003c/a\u003e\n\n### ScriptData : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| ScriptSteps | \u003ccode\u003eArray.\u0026lt;(ScriptStep\\|ScriptStepXML)\u0026gt;\u003c/code\u003e |\n| Scripts | \u003ccode\u003eObject\u003c/code\u003e |\n| Scripts.ExtraDataFields |  |\n| Scripts.Globals |  |\n| Scripts.Parameters |  |\n| Scripts.ScriptGuid |  |\n| Scripts.ScriptVersion |  |\n\n\u003ca name=\"ScriptStepXML\"\u003e\u003c/a\u003e\n\n### ScriptStepXML : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name |\n| --- |\n| Action |\n| Continue |\n| FunctionId |\n| Indentation |\n| OsLimit |\n| Param1 |\n| Param2 |\n| Param3 |\n| Param4 |\n| Param5 |\n| Sort |\n\n\u003ca name=\"ScriptStep\"\u003e\u003c/a\u003e\n\n### ScriptStep : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| Action |  |\n| Continue |  |\n| Function | [\u003ccode\u003eScriptFunction\u003c/code\u003e](#ScriptFunction) |\n| FunctionId |  |\n| Indentation |  |\n| OsLimit |  |\n| Param1 |  |\n| Param2 |  |\n| Param3 |  |\n| Param4 |  |\n| Param5 |  |\n| Sort |  |\n\n\u003ca name=\"ScriptFunction\"\u003e\u003c/a\u003e\n\n### ScriptFunction : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| Description |  |\n| FunctionFlag |  |\n| FunctionId |  |\n| FunctionType |  |\n| Name |  |\n| ParamNames | [\u003ccode\u003eArray.\u0026lt;ScriptParam\u0026gt;\u003c/code\u003e](#ScriptParam) |\n\n\u003ca name=\"ScriptParam\"\u003e\u003c/a\u003e\n\n### ScriptParam : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| Description |  |\n| ParamName |  |\n| Value |  |\n| Values | \u003ccode\u003eArray.\u0026lt;String\u0026gt;\u003c/code\u003e |\n\n\u003ca name=\"ScriptTable\"\u003e\u003c/a\u003e\n\n### ScriptTable : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| ComputerScript |  |\n| EditPermission |  |\n| FolderId |  |\n| FunctionScript |  |\n| LicenseData |  |\n| LocationScript |  |\n| MaintenanceScript |  |\n| Parameters |  |\n| Permission |  |\n| ScriptData | [\u003ccode\u003eScriptData\u003c/code\u003e](#ScriptData) |\n| ScriptFlags |  |\n| ScriptGuid |  |\n| ScriptId |  |\n| ScriptName |  |\n| ScriptNotes |  |\n| ScriptVersion |  |\n\n\u003ca name=\"FolderTable\"\u003e\u003c/a\u003e\n\n### FolderTable : \u003ccode\u003eObject\u003c/code\u003e\n**Kind**: global typedef\n**Properties**\n\n| Name |\n| --- |\n| FolderID |\n| GUID |\n| Name |\n| ParentID |\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspgeek%2Flabtech-script-decode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmspgeek%2Flabtech-script-decode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspgeek%2Flabtech-script-decode/lists"}