New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@sbp/sbp

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sbp/sbp - npm Package Compare versions

Comparing version 2.1.2 to 2.2.0

22

docs/sbp-api.md

@@ -18,2 +18,3 @@ # SBP API

- [`'sbp/selectors/unsafe'`](#sbpselectorsunsafe)
- [`'sbp/selectors/lock'`](#sbpselectorslock)
- [`'sbp/filters/global/add'`](#sbpfiltersglobaladd)

@@ -64,3 +65,3 @@ - [`'sbp/filters/domain/add'`](#sbpfiltersdomainadd)

Overwrite the implementation of a selector.
Overwrite the implementation of a selector. Remember to call `'sbp/selectors/lock'` after overwriting.

@@ -83,2 +84,3 @@ Only works on selectors that were marked unsafe using [`'sbp/selectors/unsafe'`](#sbpselectorsunsafe).

})
sbp('sbp/selectors/lock', ['gi.db/get', 'gi.db/set', 'gi.db/delete'])
}

@@ -95,8 +97,22 @@ ```

- Function signature: `function (doms: [string])`
- Function signature: `function (sels: [string])`
Marks these selectors as overwritable via [`'sbp/selectors/overwrite'`](#sbpselectorsoverwrite).
To use, must be called before registering any selectors.
To use, must be called before registering these selectors.
Selectors that are overwritten will also have access to the internal state of the domain via the `this` variable!
Remember to call `'sbp/selectors/lock'` after overwriting!
### `'sbp/selectors/lock'`
- Function signature: `function (sels: [string])`
Prevers these selectors from being overwritten again.
Always call this after overwriting selectors unless they're designed to be left unsafe.
Remember that
### `'sbp/filters/global/add'`

@@ -103,0 +119,0 @@

# History
#### 2.2.0
- Added `'sbp/selectors/lock'`. Make sure to call this after overwriting any unsafe selectors!
- Improved console warnings
#### 2.1.2

@@ -4,0 +9,0 @@

19

index.js

@@ -47,4 +47,8 @@ // @flow

if (selectors[selector]) {
(console.warn || console.log)(`[SBP WARN]: not registering already registered selector: ${selector}`)
(console.warn || console.log)(`[SBP WARN]: not registering already registered selector: '${selector}'`)
} else if (typeof sels[selector] === 'function') {
if (unsafeSelectors[selector]) {
// important warning in case we loaded any malware beforehand and aren't expecting this
(console.warn || console.log)(`[SBP WARN]: registering unsafe selector: '${selector}' (remember to lock after overwriting)`)
}
const fn = selectors[selector] = sels[selector]

@@ -77,7 +81,14 @@ registered.push(selector)

'sbp/selectors/unsafe': function (sels: [string]) {
if (Object.keys(domains).length > 1) { // 1 because 'sbp' is registered first thing
throw new Error('must be called before registering any selectors')
for (const selector of sels) {
if (selectors[selector]) {
throw new Error('unsafe must be called before registering selector')
}
unsafeSelectors[selector] = true
}
sels.forEach(s => { unsafeSelectors[s] = true })
},
'sbp/selectors/lock': function (sels: [string]) {
for (const selector of sels) {
delete unsafeSelectors[selector]
}
},
'sbp/selectors/fn': function (sel: string): Function {

@@ -84,0 +95,0 @@ return selectors[sel]

{
"name": "@sbp/sbp",
"version": "2.1.2",
"version": "2.2.0",
"description": "Selector-based Programming: JavaScript Edition",

@@ -5,0 +5,0 @@ "main": "dist/main.cjs",

@@ -9,3 +9,3 @@ # SBP: A Programming Paradigm for Building Secure Software and Operating Systems

- SBP replaces the need for OOP in many situations
- SBP is based on message-passing (an idea from Smalltalk) and comes with all of the benefits that message-passing architectures afford
- SBP is inspired by message-passing (ObjC/Smalltalk/etc) and comes with all of the benefits that message-passing architectures afford
- SBP embraces the LISP idea that `code = data` and gives you all of the benefits and possibilities that affords

@@ -176,3 +176,3 @@ - SBP makes it easier to debug and understand your code

The JavaScript SBP library comes with 8 predefined core selectors:
SBP comes with the following predefined core selectors:

@@ -184,2 +184,3 @@ - `'sbp/selectors/register'`

- `'sbp/selectors/unsafe'`
- `'sbp/selectors/lock'`
- `'sbp/filters/global/add'`

@@ -186,0 +187,0 @@ - `'sbp/filters/domain/add'`

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc