
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
masterclass-playbook
Advanced tools
Playbook is like storybook but for the master class IDE
# install globally
npm i -g masterclass-playbook
# OR install locally
yarn add -D masterclass-playbook
# init a simple hello world
npx playbook init --helloworld
This will create a boilerplate helloworld.playbook.js
playbook('Title of the playbook')
.addCategory('Title of the first category')
.addScene('Title of the First scene')
.addStep('Say Hello World!')
.addDescription('Hello World ')
.write('playbook.hello.json');
playbook git2playbook
or /api/v2/bucket/{bucketId}/file/history?filePath=relative/path/from/bucket?branch=optionalBranchName
git to playbook will read the git history and scaffold a playbook for you to adjust. This includes:
branch and each commit
We will get a history of changes to the file on each branch over each commit
This will be displayed as such://fileHistoryModel
{
// relative from the STORAGE root
filePath: "bucket/1/react/",
fileName: "HelloCtrl.js",
branches: [
{
// @param {string} branch - branch name
branch: "master",
isCheckedOut: false,
isClosed: false,
history: [
{
// @param {Date} date - date string of when the change was made for ordering
date: "yyyy-mm-dd-HH:MM:SS",
// @param {number} relativeOrder - 1 is the latest, 2 is the second to latest
relativeOrder: 1,
// @param {string} fileContents - file contents for this commit
fileContents: "class HelloWorld{\n\tconstructor(){\n\t}\n}",
changesFromLastCommit: {
fromCommitId: 'commitSha',
fromFileContents: "class HelloWorld{\n\tconstructor(){}\n}",
/**
* @name IDiffModel
* @param {*} diffByChar - difference by character
* @param {*} diffByWord - difference by word
* @param {*} diffByLine - difference by line
* @param {ISxd} sxd - difference as a scaffolder
* @param {string} sxd.template - handlebars template of the from template
* @param {[key:string]: string} sxd.data - data to inject into the template to end up with the 'To' file
* @param {[key:string]: boolean} sxd.addedOrDeleted - key was added or removed in the resulting 'To' file
* @param {string} sxd.shouldEqual - handlebars + data = shoudEqual the 'To' file
**/
diffModel: {
diffByChar: {},
diffByWord: {},
diffByLine: {},
sxd: {
template: "Hello {{originally}}{{name}}",
data: {
originally: ''
name: 'World'
},
addedOrDeleted: {
originally: false,
name: true,
},
shouldEqual: "Hello World"
}
}
},
// @param {ICommit} commit - Commit model
commit: {
// @param {string} sha - commit ID
sha: "commitId",
// @param {string} message - commit ID
message: "feat(xyz): #123 add something ",
// @param {ISemanticCommit} semantic: attempt to parse the semantic commit
semantic: {
// @param commitType - chore, doc, feature
commitType: "feature",
// @param feat - if feature, attpempt to parse shortcode
feat: "xyz",
// @param taskId - regex to find task ID
taskId: "123"
// @param message - message without meta data
message: "add something"
} //...eof semantic
} // ... eof commit
} // ... eof IHistoryModel
] // ... eof history
}//...eof IBranchModel
] //...eof branches
playbook diff --from=path/to/file/one.txt --to=path/to/file/two.txtGET /api/v2/diff?fileFrom=path/to/file/one.txt&fileTo=path/to/file/two.txtPOST /api/v2/diff// body
{
fileContentsFrom: "class One(){\n\n}",
fileContentsTo: "class Two(){\n\n}"
}
import {DiffService, IDiffModel} from 'masterclass-playbook'
/**
* Diff from path uses files already in storage
* @param {string} bucket - bucket to start from
* @param {string} pathFromFile - relative path from the Bucket to the 'From' file
* @param {string} pathToFile - relative path from the Bucket to the 'To' file
* @returns {IDiffModel} diffModel - difference by character, word, and line and the Sxd from to data
*/
DiffService.diffFromPath(bucket, pathFromFile, pathToFile);
/**
* Diff from path uses files already in storage
* @param {string} pathFromContents - the contents for the 'From' file
* @param {string} pathToContents - the contents for the 'To' file
* @returns {IDiffModel} diffModel - difference by character, word, and line and the Sxd from to data
*/
DiffService.diffFromContents(pathFromContents, pathToContents);
/**
* This will return the IDiffModel
*
* @name IDiffModel
* @param {*} diffByChar - difference by character
* @param {*} diffByWord - difference by word
* @param {*} diffByLine - difference by line
* @param {ISxd} sxd - difference as a scaffolder
* @param {string} sxd.template - handlebars template of the from template
* @param {[key:string]: string} sxd.data - data to inject into the template to end up with the 'To' file
* @param {[key:string]: boolean} sxd.addedOrDeleted - key was added or removed in the resulting 'To' file
* @param {string} sxd.shouldEqual - handlebars + data = shoudEqual the 'To' file
**/
const diffModel:IDiffModel = {
diffByChar: {},
diffByWord: {},
diffByLine: {},
sxd: {
template: "Hello {{originally}}{{name}}",
data: {
originally: ''
name: 'World'
},
addedOrDeleted: {
originally: false,
name: true,
},
shouldEqual: "Hello World"
}
}
Start a playbook.js file by using .playbook(title)
.addCategory("title")
.write("playbook.json")
.addScene(title)
.addStep(title)
.addDescriptionFromMdFile(filePath)
.addCode(start, duration, templateFilePath, outputFilePath, compileData)
.addCli(start, duration)
.withTime(start, duration)
// -- Transitions
.addTransition(start, end)
.isMin()
.isNotMin()
.isMax()
.isNotMax()
.isClosed()
.isOpen()
.move(left, top)
.moveLeft(left)
.moveRight(right)
.moveTop(top)
.moveBottom(bottom)
.setPosition(left, top)
.changeDimension(width, height)
.changeWidth(width)
.changeHeight(height)
.setDimension(width, height)
With transitions, the main units are 'px' and '%'. In order to set a transition for a given property (e.g height) then the same unit needs to be used height = 20% -> height = 35%. View the below panel models to see the default window setting values + units
isClosed = false;
top = "0px";
left = "0px";
width = "45%";
height = "100%";
isClosed = false;
top = "0px";
left = "50%";
width = "45%";
height = "80%";
.addPartial(start, duration, partialId, templateFilePath, compileData)
isClosed = true;
top = "0px";
left = "50%";
width = "45%";
height = "20%";
.addCommand(command)
FAQs
A CLI to bootsrap and CRUD playbooks in my repos
The npm package masterclass-playbook receives a total of 1 weekly downloads. As such, masterclass-playbook popularity was classified as not popular.
We found that masterclass-playbook demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.