Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: ESM Conversion #284

Merged
merged 204 commits into from
Aug 6, 2018
Merged

WIP: ESM Conversion #284

merged 204 commits into from
Aug 6, 2018

Conversation

n1474335
Copy link
Member

@n1474335 n1474335 commented Mar 26, 2018

This branch covers the conversion of CyberChef to use ES6 modules.

Aims

  • src/core to be rewritten in ESM format (.mjs, import, export, classes etc.)
  • src/web to be rewritten in ESM format
  • src/node to be rewritten in ESM format so that it can be run using node --experimental-modules without packing it with webpack (a packed CJS version will still be available for standard node)
  • An operation architecture should be written to support a fully class-based model. One class per operation. All operation configuration should be held in this class, meaning that to add an operation, only one file needs to be added.
  • All current operations should be ported to this model.
  • The test runner should also be ported to ESM format and should not require packing.
  • All current tests should be ported to this model.
  • OperationConfig and modules should be automatically generated at the build stage.
  • val-loader should be removed - it's an inelegant hack.
  • New Dish data types should be added to support raw JSON and files.
  • Operations should return a raw, native data type by default.
  • A present() method should be called on the final operation in a recipe to display it in a sensible manner for the web app.
  • Where sensible, operations can override the present() method to display their output in a custom format.

NodeJS API

We should aim to be able to export specific modules from the CyberChef package so that the 200+ operations can be used effectively in other projects.

An example (exact API still open to suggestions):

import { FromBase64 } from "cyberchef";

FromBase64.run("SGVsbG8sIFdvcmxkIQ==");

Issues

This should address #233.

Feedback

This represents a comprehensive architectural change so I'm very keen to get feedback. It will take a long time to port all current operations over to the new model, so we're starting off with just a small subset until we are completely happy that we've got it right. Please leave comments with ideas and recommendations.

@artemisbot @tlwr @d98762625

Remaining actions

  • Fix PGP ops @n1474335
  • Finish Node API @d98762625
  • Write newOperation builder script @n1474335
  • Test and fix the inline standalone version @n1474335
  • Add Magic suggestions worker @n1474335
  • Finish Bootstrap Material Design port @n1474335
  • Update wiki documentation for building, testing, adding new ops and using the API @n1474335
  • Add more tests @ALL

n1474335 and others added 30 commits January 14, 2018 16:07
…ntities, URL encoding, escaped Unicode, and Quoted Printable encoding.
…anguages by default, to lower false positives and improve performance.
…various simple encodings like XOR or bit rotates.
…e' even though their output cannot be analysed
@n1474335 n1474335 merged commit 0453bd0 into master Aug 6, 2018
@n1474335 n1474335 deleted the esm branch November 13, 2018 17:05
BRAVO68WEB pushed a commit to BRAVO68WEB/CyberChef that referenced this pull request May 29, 2022
[FIX] Improves item layout, fixes hover bug
Fixes gchq#283
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants