From 33d6b990ef7f656db07aaa9fa7f18ae90295f178 Mon Sep 17 00:00:00 2001 From: David Cameron Date: Tue, 28 Jan 2025 16:11:44 -0500 Subject: [PATCH 1/2] Cleanup local pickup examples --- .../default/locales/en.default.json.liquid | 4 ++ .../default/package.json.liquid | 5 +- .../default/shopify.extension.toml.liquid | 24 +++++-- .../default/src/index.liquid | 68 +------------------ .../run.graphql.liquid} | 2 +- .../default/src/run.liquid | 67 ++++++++++++++++++ .../{index.test.liquid => run.test.liquid} | 2 +- .../default/locales/en.default.json.liquid | 4 ++ .../default/shopify.extension.toml.liquid | 28 +++++--- 9 files changed, 118 insertions(+), 86 deletions(-) create mode 100644 order-routing/javascript/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid rename order-routing/javascript/local-pickup-delivery-option-generators/default/{input.graphql.liquid => src/run.graphql.liquid} (95%) create mode 100644 order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid rename order-routing/javascript/local-pickup-delivery-option-generators/default/src/{index.test.liquid => run.test.liquid} (98%) create mode 100644 order-routing/rust/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid new file mode 100644 index 00000000..d24e413d --- /dev/null +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid @@ -0,0 +1,4 @@ +{ + "name": "{{name}}", + "description": "{{name}}" +} \ No newline at end of file diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/package.json.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/package.json.liquid index c18c6f5f..b4a20dad 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/package.json.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/package.json.liquid @@ -11,7 +11,7 @@ }, "codegen": { "schema": "schema.graphql", - "documents": "input.graphql", + "documents": "src/*.graphql", "generates": { "./generated/api.ts": { "plugins": [ @@ -19,6 +19,9 @@ "typescript-operations" ] } + }, + "config": { + "omitOperationSuffix": true } }, "devDependencies": { diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid index e3d335e5..46a5134c 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid @@ -1,8 +1,20 @@ -name = "{{name}}" -type = "local_pickup_delivery_option_generator" -{% if uid %}uid = "{{ uid }}"{% endif %} api_version = "unstable" -[build] -command = "" -path = "dist/function.wasm" +[[extensions]] +name = "t:name" +handle = "{{handle}}" +type = "function" +{% if uid %}uid = "{{ uid }}"{% endif %} + + [[extensions.targeting]] + target = "purchase.local-pickup-delivery-option-generator.run" + input_query = "src/run.graphql" + export = "run" + + [extensions.build] + command = "" + path = "dist/function.wasm" + + [extensions.ui.paths] + create = "/" + details = "/" diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.liquid index 07ccccb3..2e6f9676 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.liquid @@ -1,67 +1 @@ -{%- if flavor contains "vanilla-js" -%} -// @ts-check - -/** - * @typedef {import("../generated/api").InputQuery} InputQuery - * @typedef {import("../generated/api").FunctionResult} FunctionResult - */ - -/** - * @type {FunctionResult} - */ -const DELIVERY_OPTION = { - operations: [ - { - add: { - title: "Main St.", - cost: 1.99, - pickupLocation: { - locationHandle: "2578303", - pickupInstruction: "Usually ready in 24 hours." - } - } - } - ], -}; - -export default /** - * @param {InputQuery} input - * @returns {FunctionResult} - */ -(input) => { - const configuration = JSON.parse( - input?.deliveryOptionGenerator?.metafield?.value ?? "{}" - ); - - return DELIVERY_OPTION; -}; -{%- elsif flavor contains "typescript" -%} -import { - InputQuery, - FunctionResult, -} from "../generated/api"; - -const DELIVERY_OPTION: FunctionResult = { - operations: [ - { - add: { - title: "Main St.", - cost: 1.99, - pickupLocation: { - locationHandle: "2578303", - pickupInstruction: "Usually ready in 24 hours." - } - } - } - ], -}; - -type Configuration = {}; - -export default (input: InputQuery): FunctionResult => { - const configuration: Configuration = JSON.parse( - input?.deliveryOptionGenerator?.metafield?.value ?? "{}" - ); - return DELIVERY_OPTION; -}; -{%- endif -%} +export * from './run'; diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/input.graphql.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.graphql.liquid similarity index 95% rename from order-routing/javascript/local-pickup-delivery-option-generators/default/input.graphql.liquid rename to order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.graphql.liquid index 8caeb6b7..b007169e 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/input.graphql.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.graphql.liquid @@ -1,4 +1,4 @@ -query Input { +query RunInput { cart { lines { id diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid new file mode 100644 index 00000000..07ccccb3 --- /dev/null +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid @@ -0,0 +1,67 @@ +{%- if flavor contains "vanilla-js" -%} +// @ts-check + +/** + * @typedef {import("../generated/api").InputQuery} InputQuery + * @typedef {import("../generated/api").FunctionResult} FunctionResult + */ + +/** + * @type {FunctionResult} + */ +const DELIVERY_OPTION = { + operations: [ + { + add: { + title: "Main St.", + cost: 1.99, + pickupLocation: { + locationHandle: "2578303", + pickupInstruction: "Usually ready in 24 hours." + } + } + } + ], +}; + +export default /** + * @param {InputQuery} input + * @returns {FunctionResult} + */ +(input) => { + const configuration = JSON.parse( + input?.deliveryOptionGenerator?.metafield?.value ?? "{}" + ); + + return DELIVERY_OPTION; +}; +{%- elsif flavor contains "typescript" -%} +import { + InputQuery, + FunctionResult, +} from "../generated/api"; + +const DELIVERY_OPTION: FunctionResult = { + operations: [ + { + add: { + title: "Main St.", + cost: 1.99, + pickupLocation: { + locationHandle: "2578303", + pickupInstruction: "Usually ready in 24 hours." + } + } + } + ], +}; + +type Configuration = {}; + +export default (input: InputQuery): FunctionResult => { + const configuration: Configuration = JSON.parse( + input?.deliveryOptionGenerator?.metafield?.value ?? "{}" + ); + return DELIVERY_OPTION; +}; +{%- endif -%} diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.test.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid similarity index 98% rename from order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.test.liquid rename to order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid index af5403a1..d42d02a8 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/index.test.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid @@ -1,6 +1,6 @@ {%- if flavor contains "vanilla-js" -%} import { describe, it, expect } from 'vitest'; -import deliveryOptionGenerator from './index'; +import deliveryOptionGenerator from './run'; /** * @typedef {import("../generated/api").FunctionResult} FunctionResult diff --git a/order-routing/rust/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid b/order-routing/rust/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid new file mode 100644 index 00000000..d24e413d --- /dev/null +++ b/order-routing/rust/local-pickup-delivery-option-generators/default/locales/en.default.json.liquid @@ -0,0 +1,4 @@ +{ + "name": "{{name}}", + "description": "{{name}}" +} \ No newline at end of file diff --git a/order-routing/rust/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid b/order-routing/rust/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid index ec3f2f8c..d581e64f 100644 --- a/order-routing/rust/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid +++ b/order-routing/rust/local-pickup-delivery-option-generators/default/shopify.extension.toml.liquid @@ -1,13 +1,21 @@ -name = "{{name}}" -type = "local_pickup_delivery_option_generator" -{% if uid %}uid = "{{ uid }}"{% endif %} api_version = "unstable" -[build] -command = "cargo build --target=wasm32-wasip1 --release" -path = "target/wasm32-wasip1/release/{{name | replace: " ", "-" | downcase}}.wasm" -watch = [ "src/**/*.rs" ] +[[extensions]] +name = "t:name" +handle = "{{handle}}" +type = "function" +{% if uid %}uid = "{{ uid }}"{% endif %} + + [[extensions.targeting]] + target = "purchase.local-pickup-delivery-option-generator.run" + input_query = "src/run.graphql" + export = "run" + + [extensions.build] + command = "cargo build --target=wasm32-wasip1 --release" + path = "target/wasm32-wasip1/release/{{handle | replace: " ", "-" | downcase}}.wasm" + watch = [ "src/**/*.rs" ] -[ui.paths] -create = "/" -details = "/" + [extensions.ui.paths] + create = "/" + details = "/" From 3fa4bdbbc37ca0f94c172ed33be3600b1c39efc6 Mon Sep 17 00:00:00 2001 From: David Cameron Date: Tue, 28 Jan 2025 16:21:29 -0500 Subject: [PATCH 2/2] Fix up code --- .../default/src/run.liquid | 84 +++++++++---------- .../default/src/run.test.liquid | 17 ++-- 2 files changed, 48 insertions(+), 53 deletions(-) diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid index 07ccccb3..c2a42935 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid @@ -2,66 +2,60 @@ // @ts-check /** - * @typedef {import("../generated/api").InputQuery} InputQuery - * @typedef {import("../generated/api").FunctionResult} FunctionResult + * @typedef {import("../generated/api").RunInput} RunInput + * @typedef {import("../generated/api").FunctionRunResult} FunctionRunResult */ /** - * @type {FunctionResult} + * @param {RunInput} input + * @returns {FunctionRunResult} */ -const DELIVERY_OPTION = { - operations: [ - { - add: { - title: "Main St.", - cost: 1.99, - pickupLocation: { - locationHandle: "2578303", - pickupInstruction: "Usually ready in 24 hours." - } - } - } - ], -}; - -export default /** - * @param {InputQuery} input - * @returns {FunctionResult} - */ -(input) => { +export function run(input) { const configuration = JSON.parse( input?.deliveryOptionGenerator?.metafield?.value ?? "{}" ); - return DELIVERY_OPTION; -}; + return { + operations: [ + { + add: { + title: "Main St.", + cost: 1.99, + pickupLocation: { + locationHandle: "2578303", + pickupInstruction: "Usually ready in 24 hours." + } + } + } + ], + }; +} {%- elsif flavor contains "typescript" -%} import { - InputQuery, - FunctionResult, + RunInput, + FunctionRunResult, } from "../generated/api"; -const DELIVERY_OPTION: FunctionResult = { - operations: [ - { - add: { - title: "Main St.", - cost: 1.99, - pickupLocation: { - locationHandle: "2578303", - pickupInstruction: "Usually ready in 24 hours." - } - } - } - ], -}; - type Configuration = {}; -export default (input: InputQuery): FunctionResult => { +export function run(input: RunInput): FunctionRunResult { const configuration: Configuration = JSON.parse( input?.deliveryOptionGenerator?.metafield?.value ?? "{}" ); - return DELIVERY_OPTION; -}; + + return { + operations: [ + { + add: { + title: "Main St.", + cost: 1.99, + pickupLocation: { + locationHandle: "2578303", + pickupInstruction: "Usually ready in 24 hours." + } + } + } + ], + }; +} {%- endif -%} diff --git a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid index d42d02a8..30c67421 100644 --- a/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid @@ -1,14 +1,15 @@ {%- if flavor contains "vanilla-js" -%} import { describe, it, expect } from 'vitest'; -import deliveryOptionGenerator from './run'; +import { run } from './run'; /** - * @typedef {import("../generated/api").FunctionResult} FunctionResult + * @typedef {import("../generated/api").RunInput} RunInput + * @typedef {import("../generated/api").FunctionRunResult} FunctionRunResult */ describe('local pickup delivery option generator function', () => { it('returns a delivery option', () => { - const result = deliveryOptionGenerator({ + const result = run({ cart: { lines: [ { @@ -43,7 +44,7 @@ describe('local pickup delivery option generator function', () => { metafield: null } }); - const expected = /** @type {FunctionResult} */ ({ + const expected = /** @type {FunctionRunResult} */ ({ operations: [ { add: { @@ -63,12 +64,12 @@ describe('local pickup delivery option generator function', () => { }); {%- elsif flavor contains "typescript" -%} import { describe, it, expect } from 'vitest'; -import deliveryOptionGenerator from './index'; -import { FunctionResult } from '../generated/api'; +import { run } from './run'; +import { RunInput, FunctionRunResult } from '../generated/api'; describe('local pickup delivery option generator function', () => { it('returns a delivery option', () => { - const result = deliveryOptionGenerator({ + const result = run({ cart: { lines: [ { @@ -103,7 +104,7 @@ describe('local pickup delivery option generator function', () => { metafield: null } }); - const expected: FunctionResult = { + const expected: FunctionRunResult = { operations: [ { add: {