
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
enonic-wizardry
Advanced tools
Functional utility library for Enonic XP. This library is intended to house reusable and tested code blocks based on enonic-fp that can be used in every project.
Enonic-wizardry is intended to supplement enonic-fp with common patterns.
We recommend using this library together with the
xp-codegen-plugin Gradle plugin. xp-codegen-plugin will create TypeScript
interfaces
for your content-types. Those interfaces will be very useful together with this library.
npm run build
In this example we have a service that returns an article by the key
as json. Or if something goes wrong, we return
an Internal Server Error instead.
import {fold} from "fp-ts/lib/IOEither";
import {pipe} from "fp-ts/lib/pipeable";
import {Request, Response} from "enonic-types/controller";
import {errorResponse, ok} from "enonic-fp/controller";
import {Article} from "../../site/content-types/article/article"; // 1
import {getContentByIds} from "enonic-wizardry/content";
import {forceArray} from "enonic-fp/array";
export function get(req: Request): Response { // 2
const keys: Array<string> = forceArray(req.params.key); // ["key1", "key2", "key3"]
const program = pipe( // 3
getContentByIds<Article>(keys), // 4
fold( // 5
errorResponse(req), // 7
ok // 8
)
);
return program(); // 9
}
interface Article { ... }
generated by
xp-codegen-plugin.Request
and Response
to control the shape of our controller.pipe
function from fp-ts to pipe the result of one function into the next one.getContentByIds
function from content
that query for the Content<Article>
where the id is one
of the strings in the keys
-Array. The return type here is IOEither<EnonicError, ReadonlyArray<Content<Article>>>
pipe
is to unpack the IOEither
. This is done with
fold(handleError, handleSuccess)
.errorResponse(req: Request)
function returns a new function that can be used as a callback by fold
.
This "new function", takes the EnonicError
object as a parameter, and creates a Json Response
with the correct
status number, based on the errorKey
of the EnonicError
.ok
function to fold
as the second parameter. The ok
creates a Response
where the status
is
200
, and the parameter is the body
. In this case the ReadonlyArray<Content<Article>>
is assigned to thebody
.program
of type IO<Response>
, but we have not yet performed a single
side effect. It's time to perform those side effects, so we run the IO
by calling it, and a Response
is returned
which out controller function can return.getContentByIds
createAll
createAndPublish
deleteAndPublish
modifyAndPublish
applyChangesToData
createMediaFromAttachment
runAsSuperUser
runInDraftContext
getSubMenuByKey
validate
FAQs
Functional utility library for Enonic XP
The npm package enonic-wizardry receives a total of 12 weekly downloads. As such, enonic-wizardry popularity was classified as not popular.
We found that enonic-wizardry 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
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.