Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
mock-block-dock
Advanced tools
Mock datastore and embedding application for testing Block Protocol blocks.
yarn add mock-block-dock
MockBlockDock
is automatically included the template generated using create-block-app
See the docs for help with the fundamental Block Protocol concepts Block Protocol
There are two options for usage:
MockBlockDock
, and pass it your block source, to have it automatically:useMockBlockProps
, which returns the mock data, properties and message callbacks for your custom use.import { MockBlockDock } from "mock-block-dock";
The component will automatically load your block, pass it properties (where it accepts properties), and listen for messages from the block, responding accordingly.
The properties passed are described in the full [Block Protocol documentation]((https://blockprotocol.org/docs).
For example, if you call updateEntity
, MockBlockDock will update the specified entity and return it.
If the entity is part of the properties sent to your block, they will be updated and the block re-rendered.
const { data, errors } = await graphModule.updateEntity({
entityId,
properties: newProps,
});
There are different ways of loading your block source depending on the entry point.
For each, you can set the block's starting entity by providing it among initialData.initialEntities
and
identifying it via the blockEntityRecordId
prop (see examples below))
const blockEntity: Entity = {
metadata: {
recordId: {
entityId: "entity-1", // the entity's unique, stable identifier
editionId: new Date(0).toISOString(), // the specific edition/version identifier
},
entityTypeId: "https://example.com/my-types/entity-types/person/v/1",
},
properties: { "https://example.com/my-types/property-type/name/": "World" },
};
When developing a React block, pass your component
import { MockBlockDock } from "mock-block-dock";
import MyBlock from "./my-block.tsx";
<MockBlockDock
blockDefinition={{ ReactComponent: MyBlock }} // provide the block source code
blockEntityRecordId={blockEntity.metadata.recordId} // identifies the block entity among the initial entities
debug // show the debug UI on startup
initialData={{
initialEntities: [blockEntity], // initial entities to load into the mock datastore
}}
/>;
When developing a custom element block, pass MockBlockDock
the class and the desired tag name.
import { MockBlockDock } from "mock-block-dock";
import MyCustomElement from "./my-custom-element.ts";
<MockBlockDock
blockDefinition={{
customElement: { elementClass: MyCustomClass, tagName: "my-block" },
}}
blockEntityRecordId={blockEntity.metadata.recordId} // identifies the block entity among the initial entities
debug // show the debug UI on startup
initialData={{
initialEntities: [blockEntity], // initial entities to load into the mock datastore
}}
/>;
When passed debug={true}
(which can be shortened to debug
), MockBlockDock
will also render a display of:
When passed readonly={true}
(which can be shortened to readonly
), MockBlockDock
will send a readonly: true
message to the block, and will reject any attempts to mutate data in the datastore.
You can also toggle this option in the debug UI.
If you want more control or visibility over the mock properties, you can retrieve them as a hook instead, and pass them to your block yourself.
You should pass initialData
and blockEntityRecordId
to set the starting datastore and identify the block entity.
import { useMockBlockProps } from "mock-block-dock";
const {
blockProperties,
blockProtocolFunctions,
entityTypes,
linkedQueries,
linkedEntities,
linkGroups,
} = useMockBlockProps({
blockEntityRecordId: blockEntity.metadata.recordId,
initialData: { initialEntities: [blockEntity] },
});
FAQs
A mock embedding application for Block Protocol blocks
We found that mock-block-dock demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.