Socket
Socket
Sign inDemoInstall

@pie-api/pie-api-live-components

Package Overview
Dependencies
Maintainers
2
Versions
87
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pie-api/pie-api-live-components - npm Package Compare versions

Comparing version 1.11.0 to 1.12.0

dist/cjs/kinds-cee63101.js

2

dist/cjs/loader.cjs.js

@@ -10,3 +10,3 @@ 'use strict';

return index.patchEsm().then(() => {
return index.bootstrapLazy([["pie-api-live_4.cjs",[[0,"pie-api-live",{"metadata":[16],"token":[1],"host":[1]},[[0,"attachSession","handleLiveSessionAdded"]]],[1,"pie-live-session",{"sessionId":[513,"session-id"],"token":[1],"client":[16],"apiUrl":[1,"api-url"],"metadata":[16],"sessionData":[32]}],[0,"pie-response",{"sessionData":[8,"session-data"]}],[0,"pie-response-cell",{"sessionData":[8,"session-data"]}]]],["item-metadata.cjs",[[0,"item-metadata",{"_key":[1,"key"],"attribute":[1]}]]]], options);
return index.bootstrapLazy([["item-metadata.cjs",[[0,"item-metadata",{"_key":[1,"key"],"attribute":[1]}]]],["pie-api-live.cjs",[[0,"pie-api-live",{"metadata":[16],"token":[1],"host":[1]},[[0,"attachSession","handleLiveSessionAdded"]]]]],["pie-live-session.cjs",[[1,"pie-live-session",{"sessionId":[513,"session-id"],"token":[1],"client":[16],"apiUrl":[1,"api-url"],"metadata":[16],"sessionData":[32]}]]],["pie-response.cjs",[[1,"pie-response",{"sessionData":[8,"session-data"]}]]],["pie-response-cell.cjs",[[1,"pie-response-cell",{"sessionData":[8,"session-data"]}]]]], options);
});

@@ -13,0 +13,0 @@ };

@@ -6,3 +6,3 @@ 'use strict';

index.patchBrowser().then(options => {
return index.bootstrapLazy([["pie-api-live_4.cjs",[[0,"pie-api-live",{"metadata":[16],"token":[1],"host":[1]},[[0,"attachSession","handleLiveSessionAdded"]]],[1,"pie-live-session",{"sessionId":[513,"session-id"],"token":[1],"client":[16],"apiUrl":[1,"api-url"],"metadata":[16],"sessionData":[32]}],[0,"pie-response",{"sessionData":[8,"session-data"]}],[0,"pie-response-cell",{"sessionData":[8,"session-data"]}]]],["item-metadata.cjs",[[0,"item-metadata",{"_key":[1,"key"],"attribute":[1]}]]]], options);
return index.bootstrapLazy([["item-metadata.cjs",[[0,"item-metadata",{"_key":[1,"key"],"attribute":[1]}]]],["pie-api-live.cjs",[[0,"pie-api-live",{"metadata":[16],"token":[1],"host":[1]},[[0,"attachSession","handleLiveSessionAdded"]]]]],["pie-live-session.cjs",[[1,"pie-live-session",{"sessionId":[513,"session-id"],"token":[1],"client":[16],"apiUrl":[1,"api-url"],"metadata":[16],"sessionData":[32]}]]],["pie-response.cjs",[[1,"pie-response",{"sessionData":[8,"session-data"]}]]],["pie-response-cell.cjs",[[1,"pie-response-cell",{"sessionData":[8,"session-data"]}]]]], options);
});

@@ -12,3 +12,3 @@ import { Component, Prop, h, Watch, Host, Listen, Event, } from "@stencil/core";

const wsLink = new WebSocketLink({
uri: `ws://${this.host}?token=${this.token}`,
uri: `wss://${this.host}?token=${this.token}`,
options: {

@@ -49,3 +49,3 @@ reconnect: true,

ev.target.client = this.gqlClient;
ev.target.apiUrl = "http://" + this.host + "/graphql";
ev.target.apiUrl = "https://" + this.host + "/graphql";
ev.target.metadata = this.metadata;

@@ -57,2 +57,8 @@ }

static get is() { return "pie-api-live"; }
static get originalStyleUrls() { return {
"$": ["pie.css"]
}; }
static get styleUrls() { return {
"$": ["pie.css"]
}; }
static get properties() { return {

@@ -63,6 +69,6 @@ "metadata": {

"complexType": {
"original": "MedatdataProperty[]",
"resolved": "MedatdataProperty[]",
"original": "MetadataProperty[]",
"resolved": "MetadataProperty[]",
"references": {
"MedatdataProperty": {
"MetadataProperty": {
"location": "import",

@@ -77,3 +83,3 @@ "path": "../../types"

"tags": [],
"text": "An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes.\n\nIf no value is found for the provided key on an item, the attribute will not be set.\n\nThis property must be set before adding any child `<pie-live-session>` elements.\n\n```\n[\n {\n key:\"metadata_key\",\n attribute: \"attribute-name\"\n }\n]\n```\n\nThis property can alternatively be set declaritively in html using `<item-metadata key=\"foo\" attribute-name=\"foo-value\">` as a child \nelement of `<pie-api-live>` before any `<pie-live-session>` elements."
"text": "An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes.\n\nIf no value is found for the provided key on an item, the attribute will not be set.\n\nThis property must be set before adding any child `<pie-live-session>` elements.\n\n```\n[\n {\n key:\"metadata_key\",\n attribute: \"attribute-name\"\n }\n]\n```\n\nThis property can alternatively be set declaritively in html using `<item-metadata key=\"foo\" attribute-name=\"foo-value\">` as a child\nelement of `<pie-api-live>` before any `<pie-live-session>` elements."
}

@@ -80,0 +86,0 @@ },

@@ -203,6 +203,6 @@ import { Component, Prop, h, Watch, Event, State, Host, Element } from '@stencil/core';

"complexType": {
"original": "MedatdataProperty[]",
"resolved": "MedatdataProperty[]",
"original": "MetadataProperty[]",
"resolved": "MetadataProperty[]",
"references": {
"MedatdataProperty": {
"MetadataProperty": {
"location": "import",

@@ -209,0 +209,0 @@ "path": "../../types"

@@ -1,3 +0,3 @@

import { Component, Element, Prop, h, Host } from '@stencil/core';
import { loadResponseElement } from '../../response-loader/response-loader';
import { Component, Element, Prop, h } from "@stencil/core";
import { loadResponseElement } from "../../response-loader/response-loader";
/**

@@ -12,12 +12,13 @@ * Renders a user's response to a question in summary text form - not more than 32 characters.

render() {
loadResponseElement('responseCell', this.sessionData, this.el, this.doc);
return (h(Host, null));
var _a;
if (!this.sessionData || !((_a = this.sessionData) === null || _a === void 0 ? void 0 : _a.itemConfig)) {
return false;
}
const loaded = loadResponseElement("responseCell", this.sessionData, this.el, this.doc);
if (!loaded) {
return h("slot", { name: "na" });
}
}
static get is() { return "pie-response-cell"; }
static get originalStyleUrls() { return {
"$": ["pie-response-cell.css"]
}; }
static get styleUrls() { return {
"$": ["pie-response-cell.css"]
}; }
static get encapsulation() { return "shadow"; }
static get properties() { return {

@@ -39,3 +40,3 @@ "sessionData": {

}],
"text": "The model of the response(s) to render.\nThis will be automaticaly set it the component is nested within a `pie-live-session` component.\nTODO - fix typing"
"text": "The model of the response(s) to render.\nThis will be automatically set it the component is nested within a `pie-live-session` component.\nTODO - fix typing"
},

@@ -42,0 +43,0 @@ "attribute": "session-data",

@@ -1,3 +0,3 @@

import { Component, Prop, h, Element, Host } from '@stencil/core';
import { loadResponseElement } from '../../response-loader/response-loader';
import { Component, Prop, h, Element } from "@stencil/core";
import { loadResponseElement } from "../../response-loader/response-loader";
/**

@@ -9,12 +9,13 @@ * Renders a user's response to a question, without rendering the UI for the whole question.

render() {
loadResponseElement('response', this.sessionData, this.el, this.doc);
return (h(Host, null));
var _a;
if (!this.sessionData || !((_a = this.sessionData) === null || _a === void 0 ? void 0 : _a.itemConfig)) {
return false;
}
const loaded = loadResponseElement("response", this.sessionData, this.el, this.doc);
if (!loaded) {
return h("slot", { name: "na" });
}
}
static get is() { return "pie-response"; }
static get originalStyleUrls() { return {
"$": ["pie-response.css"]
}; }
static get styleUrls() { return {
"$": ["pie-response.css"]
}; }
static get encapsulation() { return "shadow"; }
static get properties() { return {

@@ -21,0 +22,0 @@ "sessionData": {

@@ -39,2 +39,22 @@ export class Api {

async saveSessionResponse(sessionId, resp) {
const query = `
mutation saveResponse($sessionId:ID!, $data: [JSON]) {
saveSessionResponse(
id: $sessionId
data: $data
date: "${new Date().toISOString()}"
) {
id
}
}
`;
const sessionValue = JSON.parse(resp);
delete sessionValue.element;
const res = await this.executeGql(this.token, query, {sessionId, data:[sessionValue]}, `https://${this.host}`);
return res?.data?.saveSessionResponse;
}
async executeGql(token, query, variables, apiUrl) {

@@ -41,0 +61,0 @@ const graphQlApi = apiUrl;

import { Api } from './gql.js';
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}

@@ -15,14 +21,55 @@ export function loadPieApiLive(document, token, host) {

return null;
}
}
export async function setupMockItems(token, host, pieType) {
const api = new Api(token, host);
export async function setupMockItems(token, host) {
const mcFetch = await fetch(`/demo/fixtures/${pieType}.json`);
const mcJson = await mcFetch.json();
const created = await api.createItem(`pie-live-e23-${pieType}-${uuidv4()}`, mcJson);
const sessionCreated = await api.createSession(created.id);
return [sessionCreated];
}
export async function setupMockItemsArray(token, host, questions, student) {
const api = new Api(token, host);
const mcFetch = await fetch('/demo/fixtures/multiple-choice.json');
const mcJson = await mcFetch.json();
const created = await api.createItem("pie-live-e23-multiple-choice-1", mcJson);
const sessionCreated = await api.createSession(created.id);
return [sessionCreated];
}
try {
let sessions = [];
for (let i = 0; i < questions.length; i++) {
const mcFetch = await fetch(`/demo/fixtures/${questions[i].element}.json`);
const mcJson = await mcFetch.json();
const created = await api.createItem(`pie-live-e23-${questions[i].element}-${student.id}`, mcJson);
const sessionCreated = await api.createSession(created.id);
sessions.push({
sessionId: sessionCreated.id,
question: questions[i],
student
});
}
console.log({ sessions});
return sessions;
} catch (e) {
console.log('\n', { questions, studentId });
console.log(e);
return [];
}
}
export async function loadResponse(pieType) {
const resFetch = await fetch(`/demo/fixtures/${pieType}-response.json`);
const resJson = await resFetch.json();
return JSON.stringify(resJson, null, ' ');
}
export async function saveResponse(token, host, sessionId, data) {
const api = new Api(token, host);
const res = await api.saveSessionResponse(sessionId, data);
return res;
}
export const loadSessionContentItem = async (token, id, apiUrl, metadata) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
const output = {};

@@ -10,4 +10,4 @@ const query = `

config
data
}
data
}

@@ -18,5 +18,5 @@ }

output.config = (_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.contentItemSession) === null || _b === void 0 ? void 0 : _b.contentItem) === null || _c === void 0 ? void 0 : _c.config;
output.data = (_f = (_e = (_d = res === null || res === void 0 ? void 0 : res.data) === null || _d === void 0 ? void 0 : _d.contentItemSession) === null || _e === void 0 ? void 0 : _e.contentItem) === null || _f === void 0 ? void 0 : _f.data;
output.timestamp = (_j = (_h = (_g = res === null || res === void 0 ? void 0 : res.data) === null || _g === void 0 ? void 0 : _g.contentItemSession) === null || _h === void 0 ? void 0 : _h.contentItem) === null || _j === void 0 ? void 0 : _j.timestamp;
if (metadata && metadata.length > 0 && ((_l = (_k = res === null || res === void 0 ? void 0 : res.data) === null || _k === void 0 ? void 0 : _k.contentItemSession) === null || _l === void 0 ? void 0 : _l.contentItem)) {
output.data = (_e = (_d = res === null || res === void 0 ? void 0 : res.data) === null || _d === void 0 ? void 0 : _d.contentItemSession) === null || _e === void 0 ? void 0 : _e.data;
output.timestamp = (_h = (_g = (_f = res === null || res === void 0 ? void 0 : res.data) === null || _f === void 0 ? void 0 : _f.contentItemSession) === null || _g === void 0 ? void 0 : _g.contentItem) === null || _h === void 0 ? void 0 : _h.timestamp;
if (metadata && metadata.length > 0 && ((_k = (_j = res === null || res === void 0 ? void 0 : res.data) === null || _j === void 0 ? void 0 : _j.contentItemSession) === null || _k === void 0 ? void 0 : _k.contentItem)) {
const itemId = res.data.contentItemSession.contentItem.id;

@@ -23,0 +23,0 @@ if (itemId) {

export const loadResponseElement = (elementName, sessionData, host, doc) => {
if (!sessionData || !(sessionData === null || sessionData === void 0 ? void 0 : sessionData.itemConfig)) {
return;
return false;
}

@@ -11,2 +11,3 @@ // check if tag is defined as custom element, define it if it isn't.

}
let found = 0;
pieConfig.pies && pieConfig.pies.forEach((pie) => {

@@ -17,2 +18,3 @@ var _a;

if (elementSpecifier) {
found++;
customElements.whenDefined(tag).then(() => {

@@ -22,7 +24,11 @@ var _a;

var _a;
let el = host.querySelector(`${tag}[id="${m.id}"]`);
const hostShadowRoot = host.shadowRoot;
if (!hostShadowRoot) {
return;
}
let el = host.shadowRoot.querySelector(`${tag}[id="${m.id}"]`);
if (!el) {
const newEl = document.createElement(tag);
newEl.setAttribute('id', m.id);
host.appendChild(newEl);
host.shadowRoot.appendChild(newEl);
el = newEl;

@@ -50,2 +56,3 @@ }

});
return (pieConfig.pies && pieConfig.pies.length == found);
};

@@ -63,7 +70,5 @@ /**

responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/CategorizeCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/CategorizeResponse.js"
},
"@pie-element/charting": {
responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/ChartingCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/ChartingResponse.js"
},

@@ -88,7 +93,5 @@ "@pie-element/explicit-constructed-response": {

responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/GraphingCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/GraphingResponse.js"
},
"@pie-element/hotspot": {
responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/HotspotCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/HotspotResponse.js"
},

@@ -105,3 +108,2 @@ "@pie-element/inline-dropdown": {

responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/MatchListCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/MatchListResponse.js"
},

@@ -118,7 +120,5 @@ "@pie-element/math-inline": {

responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/NumberLineCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/NumberLineResponse.js"
},
"@pie-element/placement-ordering": {
responseCell: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/OrderingCell.js",
response: "https://unpkg.com/@pie-api/pie-element-extensions@latest/dist/pies/OrderingResponse.js"
},

@@ -125,0 +125,0 @@ "@pie-element/select-text": {

@@ -1,1 +0,1 @@

import{p as e,b as s}from"./p-e49ed7e6.js";e().then(e=>s([["p-04e2f76f",[[0,"pie-api-live",{metadata:[16],token:[1],host:[1]},[[0,"attachSession","handleLiveSessionAdded"]]],[1,"pie-live-session",{sessionId:[513,"session-id"],token:[1],client:[16],apiUrl:[1,"api-url"],metadata:[16],sessionData:[32]}],[0,"pie-response",{sessionData:[8,"session-data"]}],[0,"pie-response-cell",{sessionData:[8,"session-data"]}]]],["p-58e25be0",[[0,"item-metadata",{_key:[1,"key"],attribute:[1]}]]]],e));
import{p as e,b as s}from"./p-e49ed7e6.js";e().then(e=>s([["p-58e25be0",[[0,"item-metadata",{_key:[1,"key"],attribute:[1]}]]],["p-1171ef00",[[0,"pie-api-live",{metadata:[16],token:[1],host:[1]},[[0,"attachSession","handleLiveSessionAdded"]]]]],["p-e24287e8",[[1,"pie-live-session",{sessionId:[513,"session-id"],token:[1],client:[16],apiUrl:[1,"api-url"],metadata:[16],sessionData:[32]}]]],["p-ef085116",[[1,"pie-response",{sessionData:[8,"session-data"]}]]],["p-077c3df5",[[1,"pie-response-cell",{sessionData:[8,"session-data"]}]]]],e));

@@ -8,3 +8,3 @@ /* eslint-disable */

import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
import { MedatdataProperty } from "./types";
import { MetadataProperty } from "./types";
import { ApolloClient } from "apollo-client";

@@ -28,5 +28,5 @@ export namespace Components {

/**
* An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes. If no value is found for the provided key on an item, the attribute will not be set. This property must be set before adding any child `<pie-live-session>` elements. ``` [ { key:"metadata_key", attribute: "attribute-name" } ] ``` This property can alternatively be set declaritively in html using `<item-metadata key="foo" attribute-name="foo-value">` as a child element of `<pie-api-live>` before any `<pie-live-session>` elements.
* An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes. If no value is found for the provided key on an item, the attribute will not be set. This property must be set before adding any child `<pie-live-session>` elements. ``` [ { key:"metadata_key", attribute: "attribute-name" } ] ``` This property can alternatively be set declaritively in html using `<item-metadata key="foo" attribute-name="foo-value">` as a child element of `<pie-api-live>` before any `<pie-live-session>` elements.
*/
"metadata": MedatdataProperty[];
"metadata": MetadataProperty[];
/**

@@ -49,3 +49,3 @@ * The api token for pie-api The token must have the `live` scope

*/
"metadata": MedatdataProperty[];
"metadata": MetadataProperty[];
/**

@@ -68,3 +68,3 @@ * The Item Session Id to watch

/**
* The model of the response(s) to render. This will be automaticaly set it the component is nested within a `pie-live-session` component. TODO - fix typing
* The model of the response(s) to render. This will be automatically set it the component is nested within a `pie-live-session` component. TODO - fix typing
*/

@@ -130,5 +130,5 @@ "sessionData": any;

/**
* An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes. If no value is found for the provided key on an item, the attribute will not be set. This property must be set before adding any child `<pie-live-session>` elements. ``` [ { key:"metadata_key", attribute: "attribute-name" } ] ``` This property can alternatively be set declaritively in html using `<item-metadata key="foo" attribute-name="foo-value">` as a child element of `<pie-api-live>` before any `<pie-live-session>` elements.
* An array of MetadataProperties to be extracted from Item and added to `pie-live-session` elements as attributes. If no value is found for the provided key on an item, the attribute will not be set. This property must be set before adding any child `<pie-live-session>` elements. ``` [ { key:"metadata_key", attribute: "attribute-name" } ] ``` This property can alternatively be set declaritively in html using `<item-metadata key="foo" attribute-name="foo-value">` as a child element of `<pie-api-live>` before any `<pie-live-session>` elements.
*/
"metadata"?: MedatdataProperty[];
"metadata"?: MetadataProperty[];
"onConnectedToServer"?: (event: CustomEvent<any>) => void;

@@ -135,0 +135,0 @@ /**

import { EventEmitter } from "../../stencil-public-runtime";
import { ApolloClient } from "apollo-client";
import { MedatdataProperty } from "../../types";
import { MetadataProperty } from "../../types";
export declare class PieApiLive {

@@ -31,3 +31,3 @@ gqlClient: ApolloClient<any>;

*/
metadata: MedatdataProperty[];
metadata: MetadataProperty[];
/**

@@ -34,0 +34,0 @@ * The api token for pie-api

/// <reference types="zen-observable" />
import { EventEmitter } from '../../stencil-public-runtime';
import { ApolloClient } from 'apollo-client';
import { MedatdataProperty } from '../../types';
import { MetadataProperty } from '../../types';
declare type SessionData = {

@@ -70,3 +70,3 @@ loaded: boolean;

*/
metadata: MedatdataProperty[];
metadata: MetadataProperty[];
metadataValues: any;

@@ -73,0 +73,0 @@ updateItemInfo(): Promise<void>;

@@ -13,3 +13,3 @@ /**

* The model of the response(s) to render.
* This will be automaticaly set it the component is nested within a `pie-live-session` component.
* This will be automatically set it the component is nested within a `pie-live-session` component.
* TODO - fix typing

@@ -16,0 +16,0 @@ * @internal

@@ -1,2 +0,2 @@

import { MedatdataProperty } from './types';
export declare const loadSessionContentItem: (token: string, id: string, apiUrl: any, metadata?: MedatdataProperty[]) => Promise<any>;
import { MetadataProperty } from './types';
export declare const loadSessionContentItem: (token: string, id: string, apiUrl: any, metadata?: MetadataProperty[]) => Promise<any>;
import { PieItemElement, PieDef } from "../types";
export declare const loadResponseElement: (elementName: string, sessionData: any, host: HTMLElement, doc: Document) => void;
export declare const loadResponseElement: (elementName: string, sessionData: any, host: HTMLElement, doc: Document) => boolean;
/**

@@ -4,0 +4,0 @@ * If `config.pies` definition is missing, this will generate defaults for pies in @pie-element scope

@@ -1,2 +0,2 @@

export declare type MedatdataProperty = {
export declare type MetadataProperty = {
key: string;

@@ -3,0 +3,0 @@ attribute: string;

{
"name": "@pie-api/pie-api-live-components",
"version": "1.11.0",
"version": "1.12.0",
"description": "Custom Elements that work with PIE Api Live services",

@@ -30,2 +30,4 @@ "main": "dist/index.js",

"@commitlint/config-conventional": "^8.3.4",
"@flood/element": "^1.2.3",
"@flood/element-cli": "^1.2.3",
"@pie-api/semantic-release-jira-releases": "^0.11.0",

@@ -32,0 +34,0 @@ "@semantic-release/changelog": "^5.0.1",

@@ -44,3 +44,3 @@

To run debugger one one stencil spec test file for one test:
To run debugger on one stencil spec test file for one test:
```

@@ -51,3 +51,3 @@ node --inspect-brk -r ts-node/register ./node_modules/.bin/stencil test --spec src/components/pie-live-session/pie-live-session.spec.ts -t metadata

There is also a 'spect test current file' launch config for vscode in the repository.
There is also a 'spec test current file' launch config for vscode in the repository.

@@ -58,3 +58,3 @@ ## TODO / Notes

This would require re-puroposing/re-implemnting the item level scoring function from pie-api?
This would require re-purposing/re-implementing the item level scoring function from pie-api?

@@ -61,0 +61,0 @@ > dealing with multi-part

Sorry, the diff of this file is not supported yet

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