🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/shopify

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/shopify - npm Package Compare versions

Comparing version
0.1.0
to
0.1.1
+35
-7
package.json
{
"name": "@robinpath/shopify",
"version": "0.1.0",
"publishConfig": { "access": "public" },
"version": "0.1.1",
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
"files": ["dist"],
"scripts": { "build": "tsc" },
"peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
"devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" }
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist"
],
"scripts": {
"build": "tsc"
},
"peerDependencies": {
"@robinpath/core": ">=0.20.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"typescript": "^5.6.0"
},
"description": "Shopify module for RobinPath.",
"keywords": [
"shopify",
"ecommerce"
],
"license": "MIT",
"robinpath": {
"category": "ecommerce",
"type": "integration",
"auth": "api-key",
"functionCount": 12
}
}
-6
import type { ModuleAdapter } from "@wiredwp/robinpath";
declare const ShopifyModule: ModuleAdapter;
export default ShopifyModule;
export { ShopifyModule };
export { ShopifyFunctions, ShopifyFunctionMetadata, ShopifyModuleMetadata } from "./shopify.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,aAAa,EAAE,aAMpB,CAAC;AAEF,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
import { ShopifyFunctions, ShopifyFunctionMetadata, ShopifyModuleMetadata } from "./shopify.js";
const ShopifyModule = {
name: "shopify",
functions: ShopifyFunctions,
functionMetadata: ShopifyFunctionMetadata,
moduleMetadata: ShopifyModuleMetadata,
global: false,
}; // as ModuleAdapter
export default ShopifyModule;
export { ShopifyModule };
export { ShopifyFunctions, ShopifyFunctionMetadata, ShopifyModuleMetadata } from "./shopify.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEhG,MAAM,aAAa,GAAkB;IACnC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,gBAAgB;IAC3B,gBAAgB,EAAE,uBAA8B;IAChD,cAAc,EAAE,qBAA4B;IAC5C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
import type { BuiltinHandler } from "@wiredwp/robinpath";
export declare const ShopifyFunctions: Record<string, BuiltinHandler>;
export declare const ShopifyFunctionMetadata: {
setCredentials: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
listProducts: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getProduct: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
createProduct: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
updateProduct: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
listOrders: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getOrder: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
listCustomers: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getCustomer: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getInventory: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
countProducts: {
description: string;
parameters: never[];
returnType: string;
returnDescription: string;
example: string;
};
countOrders: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
};
export declare const ShopifyModuleMetadata: {
description: string;
category: string;
methods: string[];
};
//# sourceMappingURL=shopify.d.ts.map
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAkIlG,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAa3D,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GnC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC"}
const config = new Map();
function getConfig(key) {
const val = config.get(key);
if (!val)
throw new Error(`Shopify: "${key}" not configured. Call shopify.setCredentials first.`);
return val;
}
async function shopifyApi(path, method = "GET", body) {
const shop = getConfig("shop");
const token = getConfig("accessToken");
const res = await fetch(`https://${shop}.myshopify.com/admin/api/2024-01${path}`, {
method,
headers: {
"X-Shopify-Access-Token": token,
"Content-Type": "application/json",
},
body: body ? JSON.stringify(body) : undefined,
});
if (!res.ok) {
const text = await res.text();
throw new Error(`Shopify API error (${res.status}): ${text}`);
}
if (res.status === 204)
return { success: true };
return res.json();
}
const setCredentials = (args) => {
const shop = args[0];
const accessToken = args[1];
if (!shop || !accessToken)
throw new Error("shopify.setCredentials requires shop name and access token.");
config.set("shop", shop);
config.set("accessToken", accessToken);
return "Shopify credentials configured.";
};
const listProducts = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const params = new URLSearchParams();
if (opts.limit)
params.set("limit", String(opts.limit));
if (opts.page_info)
params.set("page_info", String(opts.page_info));
if (opts.collection_id)
params.set("collection_id", String(opts.collection_id));
if (opts.status)
params.set("status", String(opts.status));
const qs = params.toString();
const result = (await shopifyApi(`/products.json${qs ? `?${qs}` : ""}`));
return result.products;
};
const getProduct = async (args) => {
const productId = args[0];
if (!productId)
throw new Error("shopify.getProduct requires a productId.");
const result = (await shopifyApi(`/products/${productId}.json`));
return result.product;
};
const createProduct = async (args) => {
const product = args[0];
if (!product)
throw new Error("shopify.createProduct requires a product object.");
const result = (await shopifyApi("/products.json", "POST", { product }));
return result.product;
};
const updateProduct = async (args) => {
const productId = args[0];
const product = args[1];
if (!productId || !product)
throw new Error("shopify.updateProduct requires productId and product object.");
const result = (await shopifyApi(`/products/${productId}.json`, "PUT", { product }));
return result.product;
};
const listOrders = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const params = new URLSearchParams();
if (opts.limit)
params.set("limit", String(opts.limit));
if (opts.status)
params.set("status", String(opts.status));
if (opts.financial_status)
params.set("financial_status", String(opts.financial_status));
if (opts.fulfillment_status)
params.set("fulfillment_status", String(opts.fulfillment_status));
if (opts.since_id)
params.set("since_id", String(opts.since_id));
const qs = params.toString();
const result = (await shopifyApi(`/orders.json${qs ? `?${qs}` : ""}`));
return result.orders;
};
const getOrder = async (args) => {
const orderId = args[0];
if (!orderId)
throw new Error("shopify.getOrder requires an orderId.");
const result = (await shopifyApi(`/orders/${orderId}.json`));
return result.order;
};
const listCustomers = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const params = new URLSearchParams();
if (opts.limit)
params.set("limit", String(opts.limit));
if (opts.since_id)
params.set("since_id", String(opts.since_id));
const qs = params.toString();
const result = (await shopifyApi(`/customers.json${qs ? `?${qs}` : ""}`));
return result.customers;
};
const getCustomer = async (args) => {
const customerId = args[0];
if (!customerId)
throw new Error("shopify.getCustomer requires a customerId.");
const result = (await shopifyApi(`/customers/${customerId}.json`));
return result.customer;
};
const getInventory = async (args) => {
const inventoryItemId = args[0];
if (!inventoryItemId)
throw new Error("shopify.getInventory requires an inventoryItemId.");
const result = (await shopifyApi(`/inventory_levels.json?inventory_item_ids=${inventoryItemId}`));
return result.inventory_levels;
};
const countProducts = async () => {
const result = (await shopifyApi("/products/count.json"));
return result.count;
};
const countOrders = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const params = new URLSearchParams();
if (opts.status)
params.set("status", String(opts.status));
const qs = params.toString();
const result = (await shopifyApi(`/orders/count.json${qs ? `?${qs}` : ""}`));
return result.count;
};
export const ShopifyFunctions = {
setCredentials,
listProducts,
getProduct,
createProduct,
updateProduct,
listOrders,
getOrder,
listCustomers,
getCustomer,
getInventory,
countProducts,
countOrders,
};
export const ShopifyFunctionMetadata = {
setCredentials: {
description: "Set Shopify store credentials.",
parameters: [
{ name: "shop", dataType: "string", description: "Shopify store name (e.g. 'my-store' from my-store.myshopify.com)", formInputType: "text", required: true },
{ name: "accessToken", dataType: "string", description: "Admin API access token", formInputType: "text", required: true },
],
returnType: "string",
returnDescription: "Confirmation message.",
example: 'shopify.setCredentials "my-store" "shpat_xxx"',
},
listProducts: {
description: "List products in the store.",
parameters: [
{ name: "options", dataType: "object", description: "Options: limit, page_info, collection_id, status", formInputType: "json", required: false },
],
returnType: "array",
returnDescription: "Array of product objects.",
example: 'shopify.listProducts {"limit":10}',
},
getProduct: {
description: "Get a product by ID.",
parameters: [
{ name: "productId", dataType: "string", description: "Product ID", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Product object.",
example: 'shopify.getProduct "123456789"',
},
createProduct: {
description: "Create a new product.",
parameters: [
{ name: "product", dataType: "object", description: "Product object (title, body_html, vendor, product_type, variants, etc.)", formInputType: "json", required: true },
],
returnType: "object",
returnDescription: "Created product object.",
example: 'shopify.createProduct {"title":"New Product","body_html":"<p>Description</p>","vendor":"My Brand"}',
},
updateProduct: {
description: "Update an existing product.",
parameters: [
{ name: "productId", dataType: "string", description: "Product ID", formInputType: "text", required: true },
{ name: "product", dataType: "object", description: "Fields to update", formInputType: "json", required: true },
],
returnType: "object",
returnDescription: "Updated product object.",
example: 'shopify.updateProduct "123456789" {"title":"Updated Title"}',
},
listOrders: {
description: "List orders with optional filters.",
parameters: [
{ name: "options", dataType: "object", description: "Options: limit, status, financial_status, fulfillment_status, since_id", formInputType: "json", required: false },
],
returnType: "array",
returnDescription: "Array of order objects.",
example: 'shopify.listOrders {"status":"open","limit":25}',
},
getOrder: {
description: "Get an order by ID.",
parameters: [
{ name: "orderId", dataType: "string", description: "Order ID", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Order object.",
example: 'shopify.getOrder "987654321"',
},
listCustomers: {
description: "List customers.",
parameters: [
{ name: "options", dataType: "object", description: "Options: limit, since_id", formInputType: "json", required: false },
],
returnType: "array",
returnDescription: "Array of customer objects.",
example: 'shopify.listCustomers {"limit":10}',
},
getCustomer: {
description: "Get a customer by ID.",
parameters: [
{ name: "customerId", dataType: "string", description: "Customer ID", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Customer object.",
example: 'shopify.getCustomer "111222333"',
},
getInventory: {
description: "Get inventory levels for an item.",
parameters: [
{ name: "inventoryItemId", dataType: "string", description: "Inventory item ID", formInputType: "text", required: true },
],
returnType: "array",
returnDescription: "Array of inventory level objects.",
example: 'shopify.getInventory "444555666"',
},
countProducts: {
description: "Get total product count.",
parameters: [],
returnType: "number",
returnDescription: "Number of products.",
example: "shopify.countProducts",
},
countOrders: {
description: "Get total order count with optional status filter.",
parameters: [
{ name: "options", dataType: "object", description: "Options: status (open, closed, any)", formInputType: "json", required: false },
],
returnType: "number",
returnDescription: "Number of orders.",
example: 'shopify.countOrders {"status":"open"}',
},
};
export const ShopifyModuleMetadata = {
description: "Manage Shopify products, orders, customers, and inventory via the Shopify Admin REST API.",
category: "ecommerce",
methods: Object.keys(ShopifyFunctions),
};
//# sourceMappingURL=shopify.js.map
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":"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"}