@rockcarver/frodo-lib 2.0.0-21 → 2.0.0-22
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/build.zip +0 -0
- package/cjs/ops/ScriptOps.js +21 -16
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/utils/ScriptValidationUtils.js +76 -47
- package/cjs/utils/ScriptValidationUtils.js.map +1 -1
- package/cjs/utils/ScriptValidationUtils.test.js +4 -4
- package/cjs/utils/ScriptValidationUtils.test.js.map +1 -1
- package/esm/ops/ScriptOps.js +22 -17
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/utils/ScriptValidationUtils.js +65 -40
- package/esm/utils/ScriptValidationUtils.js.map +1 -1
- package/esm/utils/ScriptValidationUtils.test.js +5 -5
- package/esm/utils/ScriptValidationUtils.test.js.map +1 -1
- package/package.json +1 -1
- package/types/ops/ScriptOps.d.ts.map +1 -1
- package/types/utils/ScriptValidationUtils.d.ts +18 -15
- package/types/utils/ScriptValidationUtils.d.ts.map +1 -1
package/build.zip
CHANGED
|
Binary file
|
package/cjs/ops/ScriptOps.js
CHANGED
|
@@ -497,41 +497,43 @@ function _importScripts() {
|
|
|
497
497
|
var imported = [];
|
|
498
498
|
for (var existingId of Object.keys(importData.script)) {
|
|
499
499
|
try {
|
|
500
|
-
var
|
|
500
|
+
var _scriptData2 = importData.script[existingId];
|
|
501
501
|
var newId = existingId;
|
|
502
502
|
if (reUuid) {
|
|
503
503
|
newId = (0, _uuid.v4)();
|
|
504
504
|
(0, _Console.debugMessage)({
|
|
505
|
-
message: "ScriptOps.importScripts: Re-uuid-ing script ".concat(
|
|
505
|
+
message: "ScriptOps.importScripts: Re-uuid-ing script ".concat(_scriptData2.name, " ").concat(existingId, " => ").concat(newId, "..."),
|
|
506
506
|
state
|
|
507
507
|
});
|
|
508
|
-
|
|
508
|
+
_scriptData2._id = newId;
|
|
509
509
|
}
|
|
510
510
|
if (scriptName) {
|
|
511
511
|
(0, _Console.debugMessage)({
|
|
512
|
-
message: "ScriptOps.importScripts: Renaming script ".concat(
|
|
512
|
+
message: "ScriptOps.importScripts: Renaming script ".concat(_scriptData2.name, " => ").concat(scriptName, "..."),
|
|
513
513
|
state
|
|
514
514
|
});
|
|
515
|
-
|
|
515
|
+
_scriptData2.name = scriptName;
|
|
516
516
|
}
|
|
517
517
|
if (validate) {
|
|
518
|
-
if (!(0, _ScriptValidationUtils.
|
|
519
|
-
|
|
518
|
+
if (!(0, _ScriptValidationUtils.isScriptValid)({
|
|
519
|
+
scriptData: _scriptData2,
|
|
520
520
|
state
|
|
521
521
|
})) {
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
522
|
+
{
|
|
523
|
+
var message = "Error importing script '".concat(_scriptData2.name, "': Script is not valid");
|
|
524
|
+
(0, _Console.printMessage)({
|
|
525
|
+
message,
|
|
526
|
+
type: 'error',
|
|
527
|
+
state
|
|
528
|
+
});
|
|
529
|
+
throw new Error(message);
|
|
530
|
+
}
|
|
529
531
|
}
|
|
530
532
|
}
|
|
531
533
|
try {
|
|
532
534
|
yield updateScript({
|
|
533
535
|
scriptId: newId,
|
|
534
|
-
scriptData:
|
|
536
|
+
scriptData: _scriptData2,
|
|
535
537
|
state
|
|
536
538
|
});
|
|
537
539
|
imported.push(newId);
|
|
@@ -543,7 +545,10 @@ function _importScripts() {
|
|
|
543
545
|
}
|
|
544
546
|
}
|
|
545
547
|
if (errors.length) {
|
|
546
|
-
var errorMessages = errors.map(error =>
|
|
548
|
+
var errorMessages = errors.map(error => {
|
|
549
|
+
var _error$response2, _error$response2$data;
|
|
550
|
+
return ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || error.message;
|
|
551
|
+
}).join('\n');
|
|
547
552
|
throw new Error("Import error:\n".concat(errorMessages));
|
|
548
553
|
}
|
|
549
554
|
if (0 === imported.length) {
|
package/cjs/ops/ScriptOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.js","names":["_uuid","require","_ScriptApi","_Console","_ExportImportUtils","_ForgeRockUtils","_ScriptValidationUtils","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_default","state","createScriptExportTemplate","readScripts","readScript","scriptId","readScriptByName","scriptName","createScript","scriptData","updateScript","deleteScript","exportScript","exportScriptByName","exportScripts","importScripts","importData","_arguments","reUuid","length","validate","getScripts","getScript","getScriptByName","putScript","exports","default","_ref","meta","getMetadata","script","_x","_readScripts","_ref2","result","_getScripts","_x2","_readScript","_ref3","_getScript","_x3","_readScriptByName","_ref4","_getScriptByName","Error","concat","_x4","_createScript","_ref5","debugMessage","message","_id","name","_x5","_updateScript","_ref6","Array","isArray","convertTextArrayToBase64","_putScript","_error$response","response","status","verboseMessage","newName","applyNameCollisionPolicy","_x6","_deleteScript2","_ref7","_deleteScript","_x7","_exportScript","_ref8","convertBase64TextToArray","exportData","_x8","_exportScriptByName","_ref9","_x9","_exportScripts","_ref10","scriptList","createProgressIndicator","total","updateProgressIndicator","stopProgressIndicator","_x10","_importScripts","_ref11","errors","imported","existingId","Object","keys","scriptSkeleton","newId","uuidv4","validateScriptDecoded","printMessage","type","push","errorMessages","map","join"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\n\nimport {\n deleteScript as _deleteScript,\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n} from '../api/ScriptApi';\nimport { type ScriptSkeleton } from '../api/ScriptApi';\nimport { type ExportMetaData } from '../ops/OpsTypes';\nimport { State } from '../shared/State';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n verboseMessage,\n} from '../utils/Console';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from '../utils/ExportImportUtils';\nimport { applyNameCollisionPolicy } from '../utils/ForgeRockUtils';\nimport { validateScriptDecoded } from '../utils/ScriptValidationUtils';\n\nexport type Script = {\n /**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\n createScriptExportTemplate(): ScriptExportInterface;\n /**\n * Read all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\n readScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Read script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Read script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create script\n * @param {string} scriptId script id\n * @param {string} scriptName name of the script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script id\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Delete script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n deleteScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScripts(): Promise<ScriptExportInterface>;\n /**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScript(scriptId: string): Promise<ScriptExportInterface>;\n /**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScriptByName(scriptName: string): Promise<ScriptExportInterface>;\n /**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<ScriptSkeleton[]>} true if no errors occurred during import, false otherwise\n */\n importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid?: boolean,\n validate?: boolean\n ): Promise<ScriptSkeleton[]>;\n\n // Deprecated\n\n /**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n * @deprecated since v2.0.0 use {@link Script.readScripts | readScripts} instead\n * ```javascript\n * readScripts(): Promise<ScriptSkeleton[]>\n * ```\n * @group Deprecated\n */\n getScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Get script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScript | readScript} instead\n * ```javascript\n * readScript(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScriptByName | readScriptByName} instead\n * ```javascript\n * readScriptByName(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n * @deprecated since v2.0.0 use {@link Script.updateScript | updateScript} or {@link Script.createScript | createScript} instead\n * ```javascript\n * updateScript(scriptId: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * createScript(scriptId: string, scriptName: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n};\n\nexport default (state: State): Script => {\n return {\n createScriptExportTemplate(): ScriptExportInterface {\n return createScriptExportTemplate({ state });\n },\n async readScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async readScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async readScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return createScript({ scriptId, scriptName, scriptData, state });\n },\n async updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n async deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n return deleteScript({ scriptId, state });\n },\n async exportScript(scriptId: string): Promise<ScriptExportInterface> {\n return exportScript({ scriptId, state });\n },\n async exportScriptByName(\n scriptName: string\n ): Promise<ScriptExportInterface> {\n return exportScriptByName({ scriptName, state });\n },\n async exportScripts(): Promise<ScriptExportInterface> {\n return exportScripts({ state });\n },\n async importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid = false,\n validate = false\n ): Promise<ScriptSkeleton[]> {\n return importScripts({\n scriptName,\n importData,\n reUuid,\n validate,\n state,\n });\n },\n\n // Deprecated\n\n async getScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async getScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async getScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n };\n};\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\nexport function createScriptExportTemplate({\n state,\n}: {\n state: State;\n}): ScriptExportInterface {\n return {\n meta: getMetadata({ state }),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function readScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts({ state });\n return result;\n}\n\n/**\n * Get script\n * @returns {Promise<ScriptSkeleto]>} a promise that resolves to an array of script objects\n */\nexport async function readScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _getScript({ scriptId, state });\n}\n\n/**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function readScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName({ scriptName, state });\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${scriptName}' not found`);\n default:\n throw new Error(`${result.length} scripts '${scriptName}' found`);\n }\n}\n\n/**\n * Create script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function createScript({\n scriptId,\n scriptName,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptName: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n debugMessage({ message: `ScriptOps.createOAuth2Client: start`, state });\n scriptData._id = scriptId;\n scriptData.name = scriptName;\n try {\n await _getScript({ scriptId, state });\n } catch (error) {\n const result = await updateScript({\n scriptId,\n scriptData,\n state,\n });\n debugMessage({ message: `ScriptOps.createOAuth2Client: end`, state });\n return result;\n }\n throw new Error(`Script ${scriptData._id} already exists!`);\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\nexport async function updateScript({\n scriptId,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n let result = null;\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n result = await _putScript({ scriptId, scriptData, state });\n } catch (error) {\n if (error.response?.status === 409) {\n verboseMessage({\n message: `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n state,\n });\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n result = await updateScript({ scriptId, scriptData, state });\n verboseMessage({\n message: `Saved script as ${newName}`,\n state,\n });\n } else throw error;\n }\n return result;\n}\n\n/**\n * Delete script\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function deleteScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _deleteScript({ scriptId, state });\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptById: start`, state });\n const scriptData = await _getScript({ scriptId, state });\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptById: end`, state });\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptByName: start`, state });\n const scriptData = await readScriptByName({ scriptName, state });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptByName: end`, state });\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptExportInterface> {\n const scriptList = await readScripts({ state });\n const exportData = createScriptExportTemplate({ state });\n createProgressIndicator({\n total: scriptList.length,\n message: `Exporting ${scriptList.length} scripts...`,\n state,\n });\n for (const script of scriptList) {\n updateProgressIndicator({\n message: `Reading script ${script.name}`,\n state,\n });\n const scriptData = await readScriptByName({\n scriptName: script.name,\n state,\n });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator({\n message: `Exported ${scriptList.length} scripts.`,\n state,\n });\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts({\n scriptName,\n importData,\n reUuid = false,\n validate = false,\n state,\n}: {\n scriptName: string;\n importData: ScriptExportInterface;\n reUuid?: boolean;\n validate?: boolean;\n state: State;\n}): Promise<ScriptSkeleton[]> {\n debugMessage({ message: `ScriptOps.importScripts: start`, state });\n const response = [];\n const errors = [];\n const imported = [];\n for (const existingId of Object.keys(importData.script)) {\n try {\n const scriptSkeleton = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage({\n message: `ScriptOps.importScripts: Re-uuid-ing script ${scriptSkeleton.name} ${existingId} => ${newId}...`,\n state,\n });\n scriptSkeleton._id = newId;\n }\n if (scriptName) {\n debugMessage({\n message: `ScriptOps.importScripts: Renaming script ${scriptSkeleton.name} => ${scriptName}...`,\n state,\n });\n scriptSkeleton.name = scriptName;\n }\n if (validate) {\n if (!validateScriptDecoded({ scriptSkeleton, state })) {\n const message = `Error importing script '${scriptSkeleton.name}': Script is not valid`;\n printMessage({\n message,\n type: 'error',\n state,\n });\n throw new Error(message);\n }\n }\n try {\n await updateScript({\n scriptId: newId,\n scriptData: scriptSkeleton,\n state,\n });\n imported.push(newId);\n } catch (error) {\n errors.push(error);\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo scripts found in import data!`);\n }\n debugMessage({ message: `ScriptOps.importScripts: end`, state });\n return response;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.js","names":["_uuid","require","_ScriptApi","_Console","_ExportImportUtils","_ForgeRockUtils","_ScriptValidationUtils","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_default","state","createScriptExportTemplate","readScripts","readScript","scriptId","readScriptByName","scriptName","createScript","scriptData","updateScript","deleteScript","exportScript","exportScriptByName","exportScripts","importScripts","importData","_arguments","reUuid","length","validate","getScripts","getScript","getScriptByName","putScript","exports","default","_ref","meta","getMetadata","script","_x","_readScripts","_ref2","result","_getScripts","_x2","_readScript","_ref3","_getScript","_x3","_readScriptByName","_ref4","_getScriptByName","Error","concat","_x4","_createScript","_ref5","debugMessage","message","_id","name","_x5","_updateScript","_ref6","Array","isArray","convertTextArrayToBase64","_putScript","_error$response","response","status","verboseMessage","newName","applyNameCollisionPolicy","_x6","_deleteScript2","_ref7","_deleteScript","_x7","_exportScript","_ref8","convertBase64TextToArray","exportData","_x8","_exportScriptByName","_ref9","_x9","_exportScripts","_ref10","scriptList","createProgressIndicator","total","updateProgressIndicator","stopProgressIndicator","_x10","_importScripts","_ref11","errors","imported","existingId","Object","keys","newId","uuidv4","isScriptValid","printMessage","type","push","errorMessages","map","_error$response2","_error$response2$data","data","join"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\n\nimport {\n deleteScript as _deleteScript,\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n type ScriptSkeleton,\n} from '../api/ScriptApi';\nimport { type ExportMetaData } from '../ops/OpsTypes';\nimport { State } from '../shared/State';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n verboseMessage,\n} from '../utils/Console';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from '../utils/ExportImportUtils';\nimport { applyNameCollisionPolicy } from '../utils/ForgeRockUtils';\nimport { isScriptValid } from '../utils/ScriptValidationUtils';\n\nexport type Script = {\n /**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\n createScriptExportTemplate(): ScriptExportInterface;\n /**\n * Read all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\n readScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Read script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Read script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create script\n * @param {string} scriptId script id\n * @param {string} scriptName name of the script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script id\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Delete script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n deleteScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScripts(): Promise<ScriptExportInterface>;\n /**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScript(scriptId: string): Promise<ScriptExportInterface>;\n /**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScriptByName(scriptName: string): Promise<ScriptExportInterface>;\n /**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<ScriptSkeleton[]>} true if no errors occurred during import, false otherwise\n */\n importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid?: boolean,\n validate?: boolean\n ): Promise<ScriptSkeleton[]>;\n\n // Deprecated\n\n /**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n * @deprecated since v2.0.0 use {@link Script.readScripts | readScripts} instead\n * ```javascript\n * readScripts(): Promise<ScriptSkeleton[]>\n * ```\n * @group Deprecated\n */\n getScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Get script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScript | readScript} instead\n * ```javascript\n * readScript(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScriptByName | readScriptByName} instead\n * ```javascript\n * readScriptByName(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n * @deprecated since v2.0.0 use {@link Script.updateScript | updateScript} or {@link Script.createScript | createScript} instead\n * ```javascript\n * updateScript(scriptId: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * createScript(scriptId: string, scriptName: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n};\n\nexport default (state: State): Script => {\n return {\n createScriptExportTemplate(): ScriptExportInterface {\n return createScriptExportTemplate({ state });\n },\n async readScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async readScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async readScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return createScript({ scriptId, scriptName, scriptData, state });\n },\n async updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n async deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n return deleteScript({ scriptId, state });\n },\n async exportScript(scriptId: string): Promise<ScriptExportInterface> {\n return exportScript({ scriptId, state });\n },\n async exportScriptByName(\n scriptName: string\n ): Promise<ScriptExportInterface> {\n return exportScriptByName({ scriptName, state });\n },\n async exportScripts(): Promise<ScriptExportInterface> {\n return exportScripts({ state });\n },\n async importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid = false,\n validate = false\n ): Promise<ScriptSkeleton[]> {\n return importScripts({\n scriptName,\n importData,\n reUuid,\n validate,\n state,\n });\n },\n\n // Deprecated\n\n async getScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async getScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async getScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n };\n};\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\nexport function createScriptExportTemplate({\n state,\n}: {\n state: State;\n}): ScriptExportInterface {\n return {\n meta: getMetadata({ state }),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function readScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts({ state });\n return result;\n}\n\n/**\n * Get script\n * @returns {Promise<ScriptSkeleto]>} a promise that resolves to an array of script objects\n */\nexport async function readScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _getScript({ scriptId, state });\n}\n\n/**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function readScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName({ scriptName, state });\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${scriptName}' not found`);\n default:\n throw new Error(`${result.length} scripts '${scriptName}' found`);\n }\n}\n\n/**\n * Create script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function createScript({\n scriptId,\n scriptName,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptName: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n debugMessage({ message: `ScriptOps.createOAuth2Client: start`, state });\n scriptData._id = scriptId;\n scriptData.name = scriptName;\n try {\n await _getScript({ scriptId, state });\n } catch (error) {\n const result = await updateScript({\n scriptId,\n scriptData,\n state,\n });\n debugMessage({ message: `ScriptOps.createOAuth2Client: end`, state });\n return result;\n }\n throw new Error(`Script ${scriptData._id} already exists!`);\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\nexport async function updateScript({\n scriptId,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n let result = null;\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n result = await _putScript({ scriptId, scriptData, state });\n } catch (error) {\n if (error.response?.status === 409) {\n verboseMessage({\n message: `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n state,\n });\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n result = await updateScript({ scriptId, scriptData, state });\n verboseMessage({\n message: `Saved script as ${newName}`,\n state,\n });\n } else throw error;\n }\n return result;\n}\n\n/**\n * Delete script\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function deleteScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _deleteScript({ scriptId, state });\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptById: start`, state });\n const scriptData = await _getScript({ scriptId, state });\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptById: end`, state });\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptByName: start`, state });\n const scriptData = await readScriptByName({ scriptName, state });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptByName: end`, state });\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptExportInterface> {\n const scriptList = await readScripts({ state });\n const exportData = createScriptExportTemplate({ state });\n createProgressIndicator({\n total: scriptList.length,\n message: `Exporting ${scriptList.length} scripts...`,\n state,\n });\n for (const script of scriptList) {\n updateProgressIndicator({\n message: `Reading script ${script.name}`,\n state,\n });\n const scriptData = await readScriptByName({\n scriptName: script.name,\n state,\n });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator({\n message: `Exported ${scriptList.length} scripts.`,\n state,\n });\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts({\n scriptName,\n importData,\n reUuid = false,\n validate = false,\n state,\n}: {\n scriptName: string;\n importData: ScriptExportInterface;\n reUuid?: boolean;\n validate?: boolean;\n state: State;\n}): Promise<ScriptSkeleton[]> {\n debugMessage({ message: `ScriptOps.importScripts: start`, state });\n const response = [];\n const errors = [];\n const imported = [];\n for (const existingId of Object.keys(importData.script)) {\n try {\n const scriptData = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage({\n message: `ScriptOps.importScripts: Re-uuid-ing script ${scriptData.name} ${existingId} => ${newId}...`,\n state,\n });\n scriptData._id = newId;\n }\n if (scriptName) {\n debugMessage({\n message: `ScriptOps.importScripts: Renaming script ${scriptData.name} => ${scriptName}...`,\n state,\n });\n scriptData.name = scriptName;\n }\n if (validate) {\n if (!isScriptValid({ scriptData, state })) {\n {\n const message = `Error importing script '${scriptData.name}': Script is not valid`;\n printMessage({\n message,\n type: 'error',\n state,\n });\n throw new Error(message);\n }\n }\n }\n try {\n await updateScript({\n scriptId: newId,\n scriptData,\n state,\n });\n imported.push(newId);\n } catch (error) {\n errors.push(error);\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo scripts found in import data!`);\n }\n debugMessage({ message: `ScriptOps.importScripts: end`, state });\n return response;\n}\n"],"mappings":"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"}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.areScriptHooksValid = areScriptHooksValid;
|
|
6
7
|
exports.default = void 0;
|
|
8
|
+
exports.isScriptValid = isScriptValid;
|
|
7
9
|
exports.isValidJs = isValidJs;
|
|
10
|
+
exports.validateJs = validateJs;
|
|
8
11
|
exports.validateScript = validateScript;
|
|
9
|
-
exports.validateScriptDecoded = validateScriptDecoded;
|
|
10
12
|
exports.validateScriptHooks = validateScriptHooks;
|
|
11
13
|
var _esprima = require("esprima");
|
|
12
14
|
var _Base64Utils = require("./Base64Utils.js");
|
|
@@ -14,21 +16,29 @@ var _Console = require("./Console.js");
|
|
|
14
16
|
var _default = state => {
|
|
15
17
|
return {
|
|
16
18
|
validateScriptHooks(jsonData) {
|
|
17
|
-
|
|
18
|
-
jsonData
|
|
19
|
-
|
|
19
|
+
validateScriptHooks({
|
|
20
|
+
jsonData
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
validateScript(scriptData) {
|
|
24
|
+
validateScript({
|
|
25
|
+
scriptData
|
|
20
26
|
});
|
|
21
27
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
validateJs(javascriptSource) {
|
|
29
|
+
validateJs({
|
|
30
|
+
javascriptSource
|
|
31
|
+
});
|
|
25
32
|
},
|
|
26
|
-
|
|
27
|
-
return
|
|
33
|
+
areScriptHooksValid(jsonData) {
|
|
34
|
+
return areScriptHooksValid({
|
|
35
|
+
jsonData,
|
|
36
|
+
state
|
|
37
|
+
});
|
|
28
38
|
},
|
|
29
|
-
|
|
30
|
-
return
|
|
31
|
-
|
|
39
|
+
isScriptValid(scriptData) {
|
|
40
|
+
return isScriptValid({
|
|
41
|
+
scriptData,
|
|
32
42
|
state
|
|
33
43
|
});
|
|
34
44
|
},
|
|
@@ -41,25 +51,6 @@ var _default = state => {
|
|
|
41
51
|
};
|
|
42
52
|
};
|
|
43
53
|
exports.default = _default;
|
|
44
|
-
function validateScriptHooks(_ref) {
|
|
45
|
-
var {
|
|
46
|
-
jsonData,
|
|
47
|
-
state
|
|
48
|
-
} = _ref;
|
|
49
|
-
var scriptHooks = findAllScriptHooks(jsonData);
|
|
50
|
-
for (var scriptHook of scriptHooks) {
|
|
51
|
-
if (!('source' in scriptHook)) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
if (!isValidJs({
|
|
55
|
-
javascriptSource: scriptHook.source,
|
|
56
|
-
state
|
|
57
|
-
})) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
54
|
function findAllScriptHooks(jsonData) {
|
|
64
55
|
var scriptHooksArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
65
56
|
if (typeof jsonData !== 'object' || jsonData === null) {
|
|
@@ -78,38 +69,76 @@ function findAllScriptHooks(jsonData) {
|
|
|
78
69
|
}
|
|
79
70
|
return scriptHooksArray;
|
|
80
71
|
}
|
|
81
|
-
function
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
72
|
+
function validateScriptHooks(_ref) {
|
|
73
|
+
var {
|
|
74
|
+
jsonData
|
|
75
|
+
} = _ref;
|
|
76
|
+
var scriptHooks = findAllScriptHooks(jsonData);
|
|
77
|
+
for (var scriptHook of scriptHooks) {
|
|
78
|
+
if (!('source' in scriptHook)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
validateJs({
|
|
82
|
+
javascriptSource: scriptHook.source
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function validateScript(_ref2) {
|
|
87
|
+
var {
|
|
88
|
+
scriptData
|
|
89
|
+
} = _ref2;
|
|
90
|
+
if (scriptData.language === 'JAVASCRIPT') {
|
|
91
|
+
var script = Array.isArray(scriptData.script) ? scriptData.script.join('\n') : (0, _Base64Utils.decode)(scriptData.script);
|
|
92
|
+
validateJs({
|
|
93
|
+
javascriptSource: script
|
|
87
94
|
});
|
|
88
95
|
}
|
|
96
|
+
}
|
|
97
|
+
function validateJs(_ref3) {
|
|
98
|
+
var {
|
|
99
|
+
javascriptSource
|
|
100
|
+
} = _ref3;
|
|
101
|
+
(0, _esprima.parseScript)(javascriptSource);
|
|
89
102
|
return true;
|
|
90
103
|
}
|
|
91
|
-
function
|
|
104
|
+
function areScriptHooksValid(_ref4) {
|
|
92
105
|
var {
|
|
93
|
-
|
|
106
|
+
jsonData,
|
|
94
107
|
state
|
|
95
|
-
} =
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
} = _ref4;
|
|
109
|
+
var scriptHooks = findAllScriptHooks(jsonData);
|
|
110
|
+
for (var scriptHook of scriptHooks) {
|
|
111
|
+
if (!('source' in scriptHook)) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (!isValidJs({
|
|
115
|
+
javascriptSource: scriptHook.source,
|
|
116
|
+
state
|
|
117
|
+
})) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
98
120
|
}
|
|
99
|
-
|
|
100
|
-
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
function isScriptValid(_ref5) {
|
|
124
|
+
var {
|
|
125
|
+
scriptData,
|
|
126
|
+
state
|
|
127
|
+
} = _ref5;
|
|
128
|
+
if (scriptData.language === 'JAVASCRIPT') {
|
|
129
|
+
var script = Array.isArray(scriptData.script) ? scriptData.script.join('\n') : (0, _Base64Utils.decode)(scriptData.script);
|
|
101
130
|
return isValidJs({
|
|
102
|
-
javascriptSource:
|
|
131
|
+
javascriptSource: script,
|
|
103
132
|
state
|
|
104
133
|
});
|
|
105
134
|
}
|
|
106
135
|
return true;
|
|
107
136
|
}
|
|
108
|
-
function isValidJs(
|
|
137
|
+
function isValidJs(_ref6) {
|
|
109
138
|
var {
|
|
110
139
|
javascriptSource,
|
|
111
140
|
state
|
|
112
|
-
} =
|
|
141
|
+
} = _ref6;
|
|
113
142
|
try {
|
|
114
143
|
(0, _esprima.parseScript)(javascriptSource);
|
|
115
144
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidationUtils.js","names":["_esprima","require","_Base64Utils","_Console","_default","state","validateScriptHooks","jsonData","
|
|
1
|
+
{"version":3,"file":"ScriptValidationUtils.js","names":["_esprima","require","_Base64Utils","_Console","_default","state","validateScriptHooks","jsonData","validateScript","scriptData","validateJs","javascriptSource","areScriptHooksValid","isScriptValid","isValidJs","exports","default","findAllScriptHooks","scriptHooksArray","arguments","length","undefined","key","item","type","push","_ref","scriptHooks","scriptHook","source","_ref2","language","script","Array","isArray","join","decode","_ref3","parseScript","_ref4","_ref5","_ref6","e","printMessage","message","concat"],"sources":["../../src/utils/ScriptValidationUtils.ts"],"sourcesContent":["import { parseScript } from 'esprima';\n\nimport { type ScriptSkeleton } from '../api/ScriptApi';\nimport { State } from '../shared/State';\nimport { decode } from './Base64Utils';\nimport { printMessage } from './Console';\n\nexport type ScriptValidation = {\n validateScriptHooks(jsonData: object): void;\n validateScript(scriptData: ScriptSkeleton): void;\n validateJs(javascriptSource: string): void;\n areScriptHooksValid(jsonData: object): boolean;\n isScriptValid(scriptData: ScriptSkeleton): boolean;\n isValidJs(javascriptSource: string): boolean;\n};\n\nexport default (state: State): ScriptValidation => {\n return {\n validateScriptHooks(jsonData: object): void {\n validateScriptHooks({ jsonData });\n },\n validateScript(scriptData: ScriptSkeleton): void {\n validateScript({ scriptData });\n },\n validateJs(javascriptSource: string): void {\n validateJs({ javascriptSource });\n },\n areScriptHooksValid(jsonData: object): boolean {\n return areScriptHooksValid({ jsonData, state });\n },\n isScriptValid(scriptData: ScriptSkeleton): boolean {\n return isScriptValid({ scriptData, state });\n },\n isValidJs(javascriptSource: string): boolean {\n return isValidJs({ javascriptSource, state });\n },\n };\n};\n\nexport interface ScriptHook {\n type: 'text/javascript';\n source?: string;\n}\n\nfunction findAllScriptHooks(\n jsonData: any,\n scriptHooksArray: ScriptHook[] = []\n): ScriptHook[] {\n if (typeof jsonData !== 'object' || jsonData === null) {\n return scriptHooksArray;\n }\n\n for (const key in jsonData) {\n const item = jsonData[key];\n if (typeof item !== 'object' || item === null) {\n continue;\n }\n\n if ('type' in item && item.type === 'text/javascript') {\n scriptHooksArray.push(item);\n } else {\n findAllScriptHooks(item, scriptHooksArray);\n }\n }\n\n return scriptHooksArray;\n}\n\nexport function validateScriptHooks({ jsonData }: { jsonData: object }): void {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n validateJs({ javascriptSource: scriptHook.source });\n }\n}\n\nexport function validateScript({\n scriptData,\n}: {\n scriptData: ScriptSkeleton;\n}): void {\n if (scriptData.language === 'JAVASCRIPT') {\n const script = Array.isArray(scriptData.script)\n ? scriptData.script.join('\\n')\n : decode(scriptData.script as string);\n validateJs({ javascriptSource: script });\n }\n}\n\nexport function validateJs({ javascriptSource }: { javascriptSource: string }) {\n parseScript(javascriptSource);\n return true;\n}\n\nexport function areScriptHooksValid({\n jsonData,\n state,\n}: {\n jsonData: object;\n state: State;\n}): boolean {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n if (!isValidJs({ javascriptSource: scriptHook.source, state })) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isScriptValid({\n scriptData,\n state,\n}: {\n scriptData: ScriptSkeleton;\n state: State;\n}): boolean {\n if (scriptData.language === 'JAVASCRIPT') {\n const script = Array.isArray(scriptData.script)\n ? scriptData.script.join('\\n')\n : decode(scriptData.script as string);\n return isValidJs({ javascriptSource: script, state });\n }\n return true;\n}\n\nexport function isValidJs({\n javascriptSource,\n state,\n}: {\n javascriptSource: string;\n state: State;\n}) {\n try {\n parseScript(javascriptSource);\n return true;\n } catch (e) {\n printMessage({\n message: `Invalid JavaScript: ${e.message}`,\n type: 'error',\n state,\n });\n\n return false;\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ var _State = _interopRequireDefault(require("../shared/State.js"));
|
|
|
4
4
|
var _ScriptValidationUtils = require("./ScriptValidationUtils.js");
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
6
|
var state = (0, _State.default)({});
|
|
7
|
-
describe('
|
|
7
|
+
describe('areScriptHooksValid', () => {
|
|
8
8
|
it('should return false when there is an invalid script', () => {
|
|
9
9
|
var jsonData = {
|
|
10
10
|
script: {
|
|
@@ -12,7 +12,7 @@ describe('validateScriptHooks', () => {
|
|
|
12
12
|
source: 'invalid javascript'
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
|
-
expect((0, _ScriptValidationUtils.
|
|
15
|
+
expect((0, _ScriptValidationUtils.areScriptHooksValid)({
|
|
16
16
|
jsonData,
|
|
17
17
|
state
|
|
18
18
|
})).toBe(false);
|
|
@@ -24,7 +24,7 @@ describe('validateScriptHooks', () => {
|
|
|
24
24
|
source: 'console.log("Hello World");'
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
-
expect((0, _ScriptValidationUtils.
|
|
27
|
+
expect((0, _ScriptValidationUtils.areScriptHooksValid)({
|
|
28
28
|
jsonData,
|
|
29
29
|
state
|
|
30
30
|
})).toBe(true);
|
|
@@ -35,7 +35,7 @@ describe('validateScriptHooks', () => {
|
|
|
35
35
|
type: 'text/javascript'
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
expect((0, _ScriptValidationUtils.
|
|
38
|
+
expect((0, _ScriptValidationUtils.areScriptHooksValid)({
|
|
39
39
|
jsonData,
|
|
40
40
|
state
|
|
41
41
|
})).toBe(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidationUtils.test.js","names":["state","StateImpl","describe","it","jsonData","script","type","source","expect","
|
|
1
|
+
{"version":3,"file":"ScriptValidationUtils.test.js","names":["state","StateImpl","describe","it","jsonData","script","type","source","expect","areScriptHooksValid","toBe"],"sources":["../../src/utils/ScriptValidationUtils.test.ts"],"sourcesContent":["import StateImpl, { State } from '../shared/State';\nimport { areScriptHooksValid } from './ScriptValidationUtils';\n\nconst state: State = StateImpl({});\n\ndescribe('areScriptHooksValid', () => {\n it('should return false when there is an invalid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'invalid javascript',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(false);\n });\n\n it('should return true when there is a valid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'console.log(\"Hello World\");',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(true);\n });\n\n it('should return true when there is no script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(true);\n });\n});\n"],"mappings":";;;;;AAGA,IAAMA,KAAY,GAAG,IAAAC,cAAS,EAAC,CAAC,CAAC,CAAC;AAElCC,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpCC,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9D,IAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAAC,IAAAC,0CAAmB,EAAC;MAAEL,QAAQ;MAAEJ;IAAM,CAAC,CAAC,CAAC,CAACU,IAAI,CAAC,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEFP,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,IAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAAC,IAAAC,0CAAmB,EAAC;MAAEL,QAAQ;MAAEJ;IAAM,CAAC,CAAC,CAAC,CAACU,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFP,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,IAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE;MACR;IACF,CAAC;IACDE,MAAM,CAAC,IAAAC,0CAAmB,EAAC;MAAEL,QAAQ;MAAEJ;IAAM,CAAC,CAAC,CAAC,CAACU,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/esm/ops/ScriptOps.js
CHANGED
|
@@ -3,7 +3,7 @@ import { deleteScript as _deleteScript, getScript as _getScript, getScriptByName
|
|
|
3
3
|
import { createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator, verboseMessage } from "../utils/Console.js";
|
|
4
4
|
import { convertBase64TextToArray, convertTextArrayToBase64, getMetadata } from "../utils/ExportImportUtils.js";
|
|
5
5
|
import { applyNameCollisionPolicy } from "../utils/ForgeRockUtils.js";
|
|
6
|
-
import {
|
|
6
|
+
import { isScriptValid } from "../utils/ScriptValidationUtils.js";
|
|
7
7
|
export default (state => {
|
|
8
8
|
return {
|
|
9
9
|
createScriptExportTemplate() {
|
|
@@ -386,41 +386,43 @@ export async function importScripts({
|
|
|
386
386
|
const imported = [];
|
|
387
387
|
for (const existingId of Object.keys(importData.script)) {
|
|
388
388
|
try {
|
|
389
|
-
const
|
|
389
|
+
const scriptData = importData.script[existingId];
|
|
390
390
|
let newId = existingId;
|
|
391
391
|
if (reUuid) {
|
|
392
392
|
newId = uuidv4();
|
|
393
393
|
debugMessage({
|
|
394
|
-
message: `ScriptOps.importScripts: Re-uuid-ing script ${
|
|
394
|
+
message: `ScriptOps.importScripts: Re-uuid-ing script ${scriptData.name} ${existingId} => ${newId}...`,
|
|
395
395
|
state
|
|
396
396
|
});
|
|
397
|
-
|
|
397
|
+
scriptData._id = newId;
|
|
398
398
|
}
|
|
399
399
|
if (scriptName) {
|
|
400
400
|
debugMessage({
|
|
401
|
-
message: `ScriptOps.importScripts: Renaming script ${
|
|
401
|
+
message: `ScriptOps.importScripts: Renaming script ${scriptData.name} => ${scriptName}...`,
|
|
402
402
|
state
|
|
403
403
|
});
|
|
404
|
-
|
|
404
|
+
scriptData.name = scriptName;
|
|
405
405
|
}
|
|
406
406
|
if (validate) {
|
|
407
|
-
if (!
|
|
408
|
-
|
|
407
|
+
if (!isScriptValid({
|
|
408
|
+
scriptData,
|
|
409
409
|
state
|
|
410
410
|
})) {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
411
|
+
{
|
|
412
|
+
const message = `Error importing script '${scriptData.name}': Script is not valid`;
|
|
413
|
+
printMessage({
|
|
414
|
+
message,
|
|
415
|
+
type: 'error',
|
|
416
|
+
state
|
|
417
|
+
});
|
|
418
|
+
throw new Error(message);
|
|
419
|
+
}
|
|
418
420
|
}
|
|
419
421
|
}
|
|
420
422
|
try {
|
|
421
423
|
await updateScript({
|
|
422
424
|
scriptId: newId,
|
|
423
|
-
scriptData
|
|
425
|
+
scriptData,
|
|
424
426
|
state
|
|
425
427
|
});
|
|
426
428
|
imported.push(newId);
|
|
@@ -432,7 +434,10 @@ export async function importScripts({
|
|
|
432
434
|
}
|
|
433
435
|
}
|
|
434
436
|
if (errors.length) {
|
|
435
|
-
const errorMessages = errors.map(error =>
|
|
437
|
+
const errorMessages = errors.map(error => {
|
|
438
|
+
var _error$response2, _error$response2$data;
|
|
439
|
+
return ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || error.message;
|
|
440
|
+
}).join('\n');
|
|
436
441
|
throw new Error(`Import error:\n${errorMessages}`);
|
|
437
442
|
}
|
|
438
443
|
if (0 === imported.length) {
|
package/esm/ops/ScriptOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.js","names":["v4","uuidv4","deleteScript","_deleteScript","getScript","_getScript","getScriptByName","_getScriptByName","getScripts","_getScripts","putScript","_putScript","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","verboseMessage","convertBase64TextToArray","convertTextArrayToBase64","getMetadata","applyNameCollisionPolicy","validateScriptDecoded","state","createScriptExportTemplate","readScripts","readScript","scriptId","readScriptByName","scriptName","createScript","scriptData","updateScript","exportScript","exportScriptByName","exportScripts","importScripts","importData","reUuid","validate","meta","script","result","length","Error","message","_id","name","error","Array","isArray","_error$response","response","status","newName","exportData","scriptList","total","errors","imported","existingId","Object","keys","scriptSkeleton","newId","type","push","errorMessages","map","join"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\n\nimport {\n deleteScript as _deleteScript,\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n} from '../api/ScriptApi';\nimport { type ScriptSkeleton } from '../api/ScriptApi';\nimport { type ExportMetaData } from '../ops/OpsTypes';\nimport { State } from '../shared/State';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n verboseMessage,\n} from '../utils/Console';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from '../utils/ExportImportUtils';\nimport { applyNameCollisionPolicy } from '../utils/ForgeRockUtils';\nimport { validateScriptDecoded } from '../utils/ScriptValidationUtils';\n\nexport type Script = {\n /**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\n createScriptExportTemplate(): ScriptExportInterface;\n /**\n * Read all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\n readScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Read script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Read script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create script\n * @param {string} scriptId script id\n * @param {string} scriptName name of the script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script id\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Delete script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n deleteScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScripts(): Promise<ScriptExportInterface>;\n /**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScript(scriptId: string): Promise<ScriptExportInterface>;\n /**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScriptByName(scriptName: string): Promise<ScriptExportInterface>;\n /**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<ScriptSkeleton[]>} true if no errors occurred during import, false otherwise\n */\n importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid?: boolean,\n validate?: boolean\n ): Promise<ScriptSkeleton[]>;\n\n // Deprecated\n\n /**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n * @deprecated since v2.0.0 use {@link Script.readScripts | readScripts} instead\n * ```javascript\n * readScripts(): Promise<ScriptSkeleton[]>\n * ```\n * @group Deprecated\n */\n getScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Get script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScript | readScript} instead\n * ```javascript\n * readScript(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScriptByName | readScriptByName} instead\n * ```javascript\n * readScriptByName(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n * @deprecated since v2.0.0 use {@link Script.updateScript | updateScript} or {@link Script.createScript | createScript} instead\n * ```javascript\n * updateScript(scriptId: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * createScript(scriptId: string, scriptName: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n};\n\nexport default (state: State): Script => {\n return {\n createScriptExportTemplate(): ScriptExportInterface {\n return createScriptExportTemplate({ state });\n },\n async readScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async readScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async readScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return createScript({ scriptId, scriptName, scriptData, state });\n },\n async updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n async deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n return deleteScript({ scriptId, state });\n },\n async exportScript(scriptId: string): Promise<ScriptExportInterface> {\n return exportScript({ scriptId, state });\n },\n async exportScriptByName(\n scriptName: string\n ): Promise<ScriptExportInterface> {\n return exportScriptByName({ scriptName, state });\n },\n async exportScripts(): Promise<ScriptExportInterface> {\n return exportScripts({ state });\n },\n async importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid = false,\n validate = false\n ): Promise<ScriptSkeleton[]> {\n return importScripts({\n scriptName,\n importData,\n reUuid,\n validate,\n state,\n });\n },\n\n // Deprecated\n\n async getScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async getScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async getScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n };\n};\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\nexport function createScriptExportTemplate({\n state,\n}: {\n state: State;\n}): ScriptExportInterface {\n return {\n meta: getMetadata({ state }),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function readScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts({ state });\n return result;\n}\n\n/**\n * Get script\n * @returns {Promise<ScriptSkeleto]>} a promise that resolves to an array of script objects\n */\nexport async function readScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _getScript({ scriptId, state });\n}\n\n/**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function readScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName({ scriptName, state });\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${scriptName}' not found`);\n default:\n throw new Error(`${result.length} scripts '${scriptName}' found`);\n }\n}\n\n/**\n * Create script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function createScript({\n scriptId,\n scriptName,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptName: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n debugMessage({ message: `ScriptOps.createOAuth2Client: start`, state });\n scriptData._id = scriptId;\n scriptData.name = scriptName;\n try {\n await _getScript({ scriptId, state });\n } catch (error) {\n const result = await updateScript({\n scriptId,\n scriptData,\n state,\n });\n debugMessage({ message: `ScriptOps.createOAuth2Client: end`, state });\n return result;\n }\n throw new Error(`Script ${scriptData._id} already exists!`);\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\nexport async function updateScript({\n scriptId,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n let result = null;\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n result = await _putScript({ scriptId, scriptData, state });\n } catch (error) {\n if (error.response?.status === 409) {\n verboseMessage({\n message: `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n state,\n });\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n result = await updateScript({ scriptId, scriptData, state });\n verboseMessage({\n message: `Saved script as ${newName}`,\n state,\n });\n } else throw error;\n }\n return result;\n}\n\n/**\n * Delete script\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function deleteScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _deleteScript({ scriptId, state });\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptById: start`, state });\n const scriptData = await _getScript({ scriptId, state });\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptById: end`, state });\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptByName: start`, state });\n const scriptData = await readScriptByName({ scriptName, state });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptByName: end`, state });\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptExportInterface> {\n const scriptList = await readScripts({ state });\n const exportData = createScriptExportTemplate({ state });\n createProgressIndicator({\n total: scriptList.length,\n message: `Exporting ${scriptList.length} scripts...`,\n state,\n });\n for (const script of scriptList) {\n updateProgressIndicator({\n message: `Reading script ${script.name}`,\n state,\n });\n const scriptData = await readScriptByName({\n scriptName: script.name,\n state,\n });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator({\n message: `Exported ${scriptList.length} scripts.`,\n state,\n });\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts({\n scriptName,\n importData,\n reUuid = false,\n validate = false,\n state,\n}: {\n scriptName: string;\n importData: ScriptExportInterface;\n reUuid?: boolean;\n validate?: boolean;\n state: State;\n}): Promise<ScriptSkeleton[]> {\n debugMessage({ message: `ScriptOps.importScripts: start`, state });\n const response = [];\n const errors = [];\n const imported = [];\n for (const existingId of Object.keys(importData.script)) {\n try {\n const scriptSkeleton = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage({\n message: `ScriptOps.importScripts: Re-uuid-ing script ${scriptSkeleton.name} ${existingId} => ${newId}...`,\n state,\n });\n scriptSkeleton._id = newId;\n }\n if (scriptName) {\n debugMessage({\n message: `ScriptOps.importScripts: Renaming script ${scriptSkeleton.name} => ${scriptName}...`,\n state,\n });\n scriptSkeleton.name = scriptName;\n }\n if (validate) {\n if (!validateScriptDecoded({ scriptSkeleton, state })) {\n const message = `Error importing script '${scriptSkeleton.name}': Script is not valid`;\n printMessage({\n message,\n type: 'error',\n state,\n });\n throw new Error(message);\n }\n }\n try {\n await updateScript({\n scriptId: newId,\n scriptData: scriptSkeleton,\n state,\n });\n imported.push(newId);\n } catch (error) {\n errors.push(error);\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo scripts found in import data!`);\n }\n debugMessage({ message: `ScriptOps.importScripts: end`, state });\n return response;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.js","names":["v4","uuidv4","deleteScript","_deleteScript","getScript","_getScript","getScriptByName","_getScriptByName","getScripts","_getScripts","putScript","_putScript","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","verboseMessage","convertBase64TextToArray","convertTextArrayToBase64","getMetadata","applyNameCollisionPolicy","isScriptValid","state","createScriptExportTemplate","readScripts","readScript","scriptId","readScriptByName","scriptName","createScript","scriptData","updateScript","exportScript","exportScriptByName","exportScripts","importScripts","importData","reUuid","validate","meta","script","result","length","Error","message","_id","name","error","Array","isArray","_error$response","response","status","newName","exportData","scriptList","total","errors","imported","existingId","Object","keys","newId","type","push","errorMessages","map","_error$response2","_error$response2$data","data","join"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\n\nimport {\n deleteScript as _deleteScript,\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n type ScriptSkeleton,\n} from '../api/ScriptApi';\nimport { type ExportMetaData } from '../ops/OpsTypes';\nimport { State } from '../shared/State';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n verboseMessage,\n} from '../utils/Console';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from '../utils/ExportImportUtils';\nimport { applyNameCollisionPolicy } from '../utils/ForgeRockUtils';\nimport { isScriptValid } from '../utils/ScriptValidationUtils';\n\nexport type Script = {\n /**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\n createScriptExportTemplate(): ScriptExportInterface;\n /**\n * Read all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\n readScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Read script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Read script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n readScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create script\n * @param {string} scriptId script id\n * @param {string} scriptName name of the script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script id\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\n updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n /**\n * Delete script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\n deleteScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScripts(): Promise<ScriptExportInterface>;\n /**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScript(scriptId: string): Promise<ScriptExportInterface>;\n /**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\n exportScriptByName(scriptName: string): Promise<ScriptExportInterface>;\n /**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<ScriptSkeleton[]>} true if no errors occurred during import, false otherwise\n */\n importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid?: boolean,\n validate?: boolean\n ): Promise<ScriptSkeleton[]>;\n\n // Deprecated\n\n /**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n * @deprecated since v2.0.0 use {@link Script.readScripts | readScripts} instead\n * ```javascript\n * readScripts(): Promise<ScriptSkeleton[]>\n * ```\n * @group Deprecated\n */\n getScripts(): Promise<ScriptSkeleton[]>;\n /**\n * Get script\n * @param {string} scriptId script id\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScript | readScript} instead\n * ```javascript\n * readScript(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScript(scriptId: string): Promise<ScriptSkeleton>;\n /**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n * @deprecated since v2.0.0 use {@link Script.readScriptByName | readScriptByName} instead\n * ```javascript\n * readScriptByName(scriptName: string): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n getScriptByName(scriptName: string): Promise<ScriptSkeleton>;\n /**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n * @deprecated since v2.0.0 use {@link Script.updateScript | updateScript} or {@link Script.createScript | createScript} instead\n * ```javascript\n * updateScript(scriptId: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * createScript(scriptId: string, scriptName: string, scriptData: ScriptSkeleton): Promise<ScriptSkeleton>\n * ```\n * @group Deprecated\n */\n putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton>;\n};\n\nexport default (state: State): Script => {\n return {\n createScriptExportTemplate(): ScriptExportInterface {\n return createScriptExportTemplate({ state });\n },\n async readScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async readScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async readScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async createScript(\n scriptId: string,\n scriptName: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return createScript({ scriptId, scriptName, scriptData, state });\n },\n async updateScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n async deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n return deleteScript({ scriptId, state });\n },\n async exportScript(scriptId: string): Promise<ScriptExportInterface> {\n return exportScript({ scriptId, state });\n },\n async exportScriptByName(\n scriptName: string\n ): Promise<ScriptExportInterface> {\n return exportScriptByName({ scriptName, state });\n },\n async exportScripts(): Promise<ScriptExportInterface> {\n return exportScripts({ state });\n },\n async importScripts(\n scriptName: string,\n importData: ScriptExportInterface,\n reUuid = false,\n validate = false\n ): Promise<ScriptSkeleton[]> {\n return importScripts({\n scriptName,\n importData,\n reUuid,\n validate,\n state,\n });\n },\n\n // Deprecated\n\n async getScripts(): Promise<ScriptSkeleton[]> {\n return readScripts({ state });\n },\n async getScript(scriptId: string): Promise<ScriptSkeleton> {\n return readScript({ scriptId, state });\n },\n async getScriptByName(scriptName: string): Promise<ScriptSkeleton> {\n return readScriptByName({ scriptName, state });\n },\n async putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n ): Promise<ScriptSkeleton> {\n return updateScript({ scriptId, scriptData, state });\n },\n };\n};\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty script export template\n * @returns {ScriptExportInterface} an empty script export template\n */\nexport function createScriptExportTemplate({\n state,\n}: {\n state: State;\n}): ScriptExportInterface {\n return {\n meta: getMetadata({ state }),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function readScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts({ state });\n return result;\n}\n\n/**\n * Get script\n * @returns {Promise<ScriptSkeleto]>} a promise that resolves to an array of script objects\n */\nexport async function readScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _getScript({ scriptId, state });\n}\n\n/**\n * Get script by name\n * @param {string} scriptName name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function readScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName({ scriptName, state });\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${scriptName}' not found`);\n default:\n throw new Error(`${result.length} scripts '${scriptName}' found`);\n }\n}\n\n/**\n * Create script\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function createScript({\n scriptId,\n scriptName,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptName: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n debugMessage({ message: `ScriptOps.createOAuth2Client: start`, state });\n scriptData._id = scriptId;\n scriptData.name = scriptName;\n try {\n await _getScript({ scriptId, state });\n } catch (error) {\n const result = await updateScript({\n scriptId,\n scriptData,\n state,\n });\n debugMessage({ message: `ScriptOps.createOAuth2Client: end`, state });\n return result;\n }\n throw new Error(`Script ${scriptData._id} already exists!`);\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<ScriptSkeleton>} a status object\n */\nexport async function updateScript({\n scriptId,\n scriptData,\n state,\n}: {\n scriptId: string;\n scriptData: ScriptSkeleton;\n state: State;\n}): Promise<ScriptSkeleton> {\n let result = null;\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n result = await _putScript({ scriptId, scriptData, state });\n } catch (error) {\n if (error.response?.status === 409) {\n verboseMessage({\n message: `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n state,\n });\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n result = await updateScript({ scriptId, scriptData, state });\n verboseMessage({\n message: `Saved script as ${newName}`,\n state,\n });\n } else throw error;\n }\n return result;\n}\n\n/**\n * Delete script\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} a promise resolving to a script object\n */\nexport async function deleteScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptSkeleton> {\n return _deleteScript({ scriptId, state });\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript({\n scriptId,\n state,\n}: {\n scriptId: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptById: start`, state });\n const scriptData = await _getScript({ scriptId, state });\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptById: end`, state });\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} scriptName script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName({\n scriptName,\n state,\n}: {\n scriptName: string;\n state: State;\n}): Promise<ScriptExportInterface> {\n debugMessage({ message: `ScriptOps.exportScriptByName: start`, state });\n const scriptData = await readScriptByName({ scriptName, state });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n const exportData = createScriptExportTemplate({ state });\n exportData.script[scriptData._id] = scriptData;\n debugMessage({ message: `ScriptOps.exportScriptByName: end`, state });\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts({\n state,\n}: {\n state: State;\n}): Promise<ScriptExportInterface> {\n const scriptList = await readScripts({ state });\n const exportData = createScriptExportTemplate({ state });\n createProgressIndicator({\n total: scriptList.length,\n message: `Exporting ${scriptList.length} scripts...`,\n state,\n });\n for (const script of scriptList) {\n updateProgressIndicator({\n message: `Reading script ${script.name}`,\n state,\n });\n const scriptData = await readScriptByName({\n scriptName: script.name,\n state,\n });\n scriptData.script = convertBase64TextToArray(scriptData.script as string);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator({\n message: `Exported ${scriptList.length} scripts.`,\n state,\n });\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} scriptName Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts({\n scriptName,\n importData,\n reUuid = false,\n validate = false,\n state,\n}: {\n scriptName: string;\n importData: ScriptExportInterface;\n reUuid?: boolean;\n validate?: boolean;\n state: State;\n}): Promise<ScriptSkeleton[]> {\n debugMessage({ message: `ScriptOps.importScripts: start`, state });\n const response = [];\n const errors = [];\n const imported = [];\n for (const existingId of Object.keys(importData.script)) {\n try {\n const scriptData = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage({\n message: `ScriptOps.importScripts: Re-uuid-ing script ${scriptData.name} ${existingId} => ${newId}...`,\n state,\n });\n scriptData._id = newId;\n }\n if (scriptName) {\n debugMessage({\n message: `ScriptOps.importScripts: Renaming script ${scriptData.name} => ${scriptName}...`,\n state,\n });\n scriptData.name = scriptName;\n }\n if (validate) {\n if (!isScriptValid({ scriptData, state })) {\n {\n const message = `Error importing script '${scriptData.name}': Script is not valid`;\n printMessage({\n message,\n type: 'error',\n state,\n });\n throw new Error(message);\n }\n }\n }\n try {\n await updateScript({\n scriptId: newId,\n scriptData,\n state,\n });\n imported.push(newId);\n } catch (error) {\n errors.push(error);\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo scripts found in import data!`);\n }\n debugMessage({ message: `ScriptOps.importScripts: end`, state });\n return response;\n}\n"],"mappings":"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"}
|
|
@@ -4,20 +4,29 @@ import { printMessage } from "./Console.js";
|
|
|
4
4
|
export default (state => {
|
|
5
5
|
return {
|
|
6
6
|
validateScriptHooks(jsonData) {
|
|
7
|
-
|
|
8
|
-
jsonData
|
|
9
|
-
|
|
7
|
+
validateScriptHooks({
|
|
8
|
+
jsonData
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
validateScript(scriptData) {
|
|
12
|
+
validateScript({
|
|
13
|
+
scriptData
|
|
10
14
|
});
|
|
11
15
|
},
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
validateJs(javascriptSource) {
|
|
17
|
+
validateJs({
|
|
18
|
+
javascriptSource
|
|
19
|
+
});
|
|
14
20
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
21
|
+
areScriptHooksValid(jsonData) {
|
|
22
|
+
return areScriptHooksValid({
|
|
23
|
+
jsonData,
|
|
24
|
+
state
|
|
25
|
+
});
|
|
17
26
|
},
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
|
|
27
|
+
isScriptValid(scriptData) {
|
|
28
|
+
return isScriptValid({
|
|
29
|
+
scriptData,
|
|
21
30
|
state
|
|
22
31
|
});
|
|
23
32
|
},
|
|
@@ -29,24 +38,6 @@ export default (state => {
|
|
|
29
38
|
}
|
|
30
39
|
};
|
|
31
40
|
});
|
|
32
|
-
export function validateScriptHooks({
|
|
33
|
-
jsonData,
|
|
34
|
-
state
|
|
35
|
-
}) {
|
|
36
|
-
const scriptHooks = findAllScriptHooks(jsonData);
|
|
37
|
-
for (const scriptHook of scriptHooks) {
|
|
38
|
-
if (!('source' in scriptHook)) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (!isValidJs({
|
|
42
|
-
javascriptSource: scriptHook.source,
|
|
43
|
-
state
|
|
44
|
-
})) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
41
|
function findAllScriptHooks(jsonData, scriptHooksArray = []) {
|
|
51
42
|
if (typeof jsonData !== 'object' || jsonData === null) {
|
|
52
43
|
return scriptHooksArray;
|
|
@@ -64,25 +55,59 @@ function findAllScriptHooks(jsonData, scriptHooksArray = []) {
|
|
|
64
55
|
}
|
|
65
56
|
return scriptHooksArray;
|
|
66
57
|
}
|
|
67
|
-
export function
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
58
|
+
export function validateScriptHooks({
|
|
59
|
+
jsonData
|
|
60
|
+
}) {
|
|
61
|
+
const scriptHooks = findAllScriptHooks(jsonData);
|
|
62
|
+
for (const scriptHook of scriptHooks) {
|
|
63
|
+
if (!('source' in scriptHook)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
validateJs({
|
|
67
|
+
javascriptSource: scriptHook.source
|
|
73
68
|
});
|
|
74
69
|
}
|
|
70
|
+
}
|
|
71
|
+
export function validateScript({
|
|
72
|
+
scriptData
|
|
73
|
+
}) {
|
|
74
|
+
if (scriptData.language === 'JAVASCRIPT') {
|
|
75
|
+
const script = Array.isArray(scriptData.script) ? scriptData.script.join('\n') : decode(scriptData.script);
|
|
76
|
+
validateJs({
|
|
77
|
+
javascriptSource: script
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function validateJs({
|
|
82
|
+
javascriptSource
|
|
83
|
+
}) {
|
|
84
|
+
parseScript(javascriptSource);
|
|
75
85
|
return true;
|
|
76
86
|
}
|
|
77
|
-
export function
|
|
78
|
-
|
|
87
|
+
export function areScriptHooksValid({
|
|
88
|
+
jsonData,
|
|
79
89
|
state
|
|
80
90
|
}) {
|
|
81
|
-
|
|
82
|
-
|
|
91
|
+
const scriptHooks = findAllScriptHooks(jsonData);
|
|
92
|
+
for (const scriptHook of scriptHooks) {
|
|
93
|
+
if (!('source' in scriptHook)) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (!isValidJs({
|
|
97
|
+
javascriptSource: scriptHook.source,
|
|
98
|
+
state
|
|
99
|
+
})) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
83
102
|
}
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
export function isScriptValid({
|
|
106
|
+
scriptData,
|
|
107
|
+
state
|
|
108
|
+
}) {
|
|
109
|
+
if (scriptData.language === 'JAVASCRIPT') {
|
|
110
|
+
const script = Array.isArray(scriptData.script) ? scriptData.script.join('\n') : decode(scriptData.script);
|
|
86
111
|
return isValidJs({
|
|
87
112
|
javascriptSource: script,
|
|
88
113
|
state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidationUtils.js","names":["parseScript","decode","printMessage","state","validateScriptHooks","jsonData","
|
|
1
|
+
{"version":3,"file":"ScriptValidationUtils.js","names":["parseScript","decode","printMessage","state","validateScriptHooks","jsonData","validateScript","scriptData","validateJs","javascriptSource","areScriptHooksValid","isScriptValid","isValidJs","findAllScriptHooks","scriptHooksArray","key","item","type","push","scriptHooks","scriptHook","source","language","script","Array","isArray","join","e","message"],"sources":["../../src/utils/ScriptValidationUtils.ts"],"sourcesContent":["import { parseScript } from 'esprima';\n\nimport { type ScriptSkeleton } from '../api/ScriptApi';\nimport { State } from '../shared/State';\nimport { decode } from './Base64Utils';\nimport { printMessage } from './Console';\n\nexport type ScriptValidation = {\n validateScriptHooks(jsonData: object): void;\n validateScript(scriptData: ScriptSkeleton): void;\n validateJs(javascriptSource: string): void;\n areScriptHooksValid(jsonData: object): boolean;\n isScriptValid(scriptData: ScriptSkeleton): boolean;\n isValidJs(javascriptSource: string): boolean;\n};\n\nexport default (state: State): ScriptValidation => {\n return {\n validateScriptHooks(jsonData: object): void {\n validateScriptHooks({ jsonData });\n },\n validateScript(scriptData: ScriptSkeleton): void {\n validateScript({ scriptData });\n },\n validateJs(javascriptSource: string): void {\n validateJs({ javascriptSource });\n },\n areScriptHooksValid(jsonData: object): boolean {\n return areScriptHooksValid({ jsonData, state });\n },\n isScriptValid(scriptData: ScriptSkeleton): boolean {\n return isScriptValid({ scriptData, state });\n },\n isValidJs(javascriptSource: string): boolean {\n return isValidJs({ javascriptSource, state });\n },\n };\n};\n\nexport interface ScriptHook {\n type: 'text/javascript';\n source?: string;\n}\n\nfunction findAllScriptHooks(\n jsonData: any,\n scriptHooksArray: ScriptHook[] = []\n): ScriptHook[] {\n if (typeof jsonData !== 'object' || jsonData === null) {\n return scriptHooksArray;\n }\n\n for (const key in jsonData) {\n const item = jsonData[key];\n if (typeof item !== 'object' || item === null) {\n continue;\n }\n\n if ('type' in item && item.type === 'text/javascript') {\n scriptHooksArray.push(item);\n } else {\n findAllScriptHooks(item, scriptHooksArray);\n }\n }\n\n return scriptHooksArray;\n}\n\nexport function validateScriptHooks({ jsonData }: { jsonData: object }): void {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n validateJs({ javascriptSource: scriptHook.source });\n }\n}\n\nexport function validateScript({\n scriptData,\n}: {\n scriptData: ScriptSkeleton;\n}): void {\n if (scriptData.language === 'JAVASCRIPT') {\n const script = Array.isArray(scriptData.script)\n ? scriptData.script.join('\\n')\n : decode(scriptData.script as string);\n validateJs({ javascriptSource: script });\n }\n}\n\nexport function validateJs({ javascriptSource }: { javascriptSource: string }) {\n parseScript(javascriptSource);\n return true;\n}\n\nexport function areScriptHooksValid({\n jsonData,\n state,\n}: {\n jsonData: object;\n state: State;\n}): boolean {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n if (!isValidJs({ javascriptSource: scriptHook.source, state })) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isScriptValid({\n scriptData,\n state,\n}: {\n scriptData: ScriptSkeleton;\n state: State;\n}): boolean {\n if (scriptData.language === 'JAVASCRIPT') {\n const script = Array.isArray(scriptData.script)\n ? scriptData.script.join('\\n')\n : decode(scriptData.script as string);\n return isValidJs({ javascriptSource: script, state });\n }\n return true;\n}\n\nexport function isValidJs({\n javascriptSource,\n state,\n}: {\n javascriptSource: string;\n state: State;\n}) {\n try {\n parseScript(javascriptSource);\n return true;\n } catch (e) {\n printMessage({\n message: `Invalid JavaScript: ${e.message}`,\n type: 'error',\n state,\n });\n\n return false;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import StateImpl from "../shared/State.js";
|
|
2
|
-
import {
|
|
2
|
+
import { areScriptHooksValid } from "./ScriptValidationUtils.js";
|
|
3
3
|
const state = StateImpl({});
|
|
4
|
-
describe('
|
|
4
|
+
describe('areScriptHooksValid', () => {
|
|
5
5
|
it('should return false when there is an invalid script', () => {
|
|
6
6
|
const jsonData = {
|
|
7
7
|
script: {
|
|
@@ -9,7 +9,7 @@ describe('validateScriptHooks', () => {
|
|
|
9
9
|
source: 'invalid javascript'
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
expect(
|
|
12
|
+
expect(areScriptHooksValid({
|
|
13
13
|
jsonData,
|
|
14
14
|
state
|
|
15
15
|
})).toBe(false);
|
|
@@ -21,7 +21,7 @@ describe('validateScriptHooks', () => {
|
|
|
21
21
|
source: 'console.log("Hello World");'
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
expect(
|
|
24
|
+
expect(areScriptHooksValid({
|
|
25
25
|
jsonData,
|
|
26
26
|
state
|
|
27
27
|
})).toBe(true);
|
|
@@ -32,7 +32,7 @@ describe('validateScriptHooks', () => {
|
|
|
32
32
|
type: 'text/javascript'
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
expect(
|
|
35
|
+
expect(areScriptHooksValid({
|
|
36
36
|
jsonData,
|
|
37
37
|
state
|
|
38
38
|
})).toBe(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidationUtils.test.js","names":["StateImpl","
|
|
1
|
+
{"version":3,"file":"ScriptValidationUtils.test.js","names":["StateImpl","areScriptHooksValid","state","describe","it","jsonData","script","type","source","expect","toBe"],"sources":["../../src/utils/ScriptValidationUtils.test.ts"],"sourcesContent":["import StateImpl, { State } from '../shared/State';\nimport { areScriptHooksValid } from './ScriptValidationUtils';\n\nconst state: State = StateImpl({});\n\ndescribe('areScriptHooksValid', () => {\n it('should return false when there is an invalid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'invalid javascript',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(false);\n });\n\n it('should return true when there is a valid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'console.log(\"Hello World\");',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(true);\n });\n\n it('should return true when there is no script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n },\n };\n expect(areScriptHooksValid({ jsonData, state })).toBe(true);\n });\n});\n"],"mappings":"OAAOA,SAAS;AAAA,SACPC,mBAAmB;AAE5B,MAAMC,KAAY,GAAGF,SAAS,CAAC,CAAC,CAAC,CAAC;AAElCG,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpCC,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEFN,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFN,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE;MACR;IACF,CAAC;IACDE,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.d.ts","sourceRoot":"","sources":["../../src/ops/ScriptOps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScriptOps.d.ts","sourceRoot":"","sources":["../../src/ops/ScriptOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
import { type ScriptSkeleton } from '../api/ScriptApi';
|
|
2
2
|
import { State } from '../shared/State';
|
|
3
3
|
export type ScriptValidation = {
|
|
4
|
-
validateScriptHooks(jsonData: object):
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
declare const _default: (state: State) => {
|
|
11
|
-
validateScriptHooks(jsonData: object): boolean;
|
|
12
|
-
findAllScriptHooks(jsonData: object, scriptHooksArray?: ScriptHook[]): ScriptHook[];
|
|
13
|
-
validateScript(script: ScriptSkeleton): boolean;
|
|
14
|
-
validateScriptDecoded(scriptSkeleton: ScriptSkeleton): boolean;
|
|
4
|
+
validateScriptHooks(jsonData: object): void;
|
|
5
|
+
validateScript(scriptData: ScriptSkeleton): void;
|
|
6
|
+
validateJs(javascriptSource: string): void;
|
|
7
|
+
areScriptHooksValid(jsonData: object): boolean;
|
|
8
|
+
isScriptValid(scriptData: ScriptSkeleton): boolean;
|
|
15
9
|
isValidJs(javascriptSource: string): boolean;
|
|
16
10
|
};
|
|
11
|
+
declare const _default: (state: State) => ScriptValidation;
|
|
17
12
|
export default _default;
|
|
18
13
|
export interface ScriptHook {
|
|
19
14
|
type: 'text/javascript';
|
|
20
15
|
source?: string;
|
|
21
16
|
}
|
|
22
|
-
export declare function validateScriptHooks({ jsonData
|
|
17
|
+
export declare function validateScriptHooks({ jsonData }: {
|
|
18
|
+
jsonData: object;
|
|
19
|
+
}): void;
|
|
20
|
+
export declare function validateScript({ scriptData, }: {
|
|
21
|
+
scriptData: ScriptSkeleton;
|
|
22
|
+
}): void;
|
|
23
|
+
export declare function validateJs({ javascriptSource }: {
|
|
24
|
+
javascriptSource: string;
|
|
25
|
+
}): boolean;
|
|
26
|
+
export declare function areScriptHooksValid({ jsonData, state, }: {
|
|
23
27
|
jsonData: object;
|
|
24
28
|
state: State;
|
|
25
29
|
}): boolean;
|
|
26
|
-
export declare function
|
|
27
|
-
|
|
28
|
-
scriptSkeleton: ScriptSkeleton;
|
|
30
|
+
export declare function isScriptValid({ scriptData, state, }: {
|
|
31
|
+
scriptData: ScriptSkeleton;
|
|
29
32
|
state: State;
|
|
30
33
|
}): boolean;
|
|
31
34
|
export declare function isValidJs({ javascriptSource, state, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptValidationUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ScriptValidationUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"ScriptValidationUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ScriptValidationUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9C,CAAC;gCAEqB,KAAK,KAAG,gBAAgB;AAA/C,wBAqBE;AAEF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU5E;AAED,wBAAgB,cAAc,CAAC,EAC7B,UAAU,GACX,EAAE;IACD,UAAU,EAAE,cAAc,CAAC;CAC5B,GAAG,IAAI,CAOP;AAED,wBAAgB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,WAG5E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd,GAAG,OAAO,CAcV;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,KAAK,GACN,EAAE;IACD,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd,GAAG,OAAO,CAQV;AAED,wBAAgB,SAAS,CAAC,EACxB,gBAAgB,EAChB,KAAK,GACN,EAAE;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;CACd,WAaA"}
|