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..c2a42935 --- /dev/null +++ b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.liquid @@ -0,0 +1,61 @@ +{%- if flavor contains "vanilla-js" -%} +// @ts-check + +/** + * @typedef {import("../generated/api").RunInput} RunInput + * @typedef {import("../generated/api").FunctionRunResult} FunctionRunResult + */ + +/** + * @param {RunInput} input + * @returns {FunctionRunResult} + */ +export function run(input) { + const configuration = JSON.parse( + input?.deliveryOptionGenerator?.metafield?.value ?? "{}" + ); + + return { + operations: [ + { + add: { + title: "Main St.", + cost: 1.99, + pickupLocation: { + locationHandle: "2578303", + pickupInstruction: "Usually ready in 24 hours." + } + } + } + ], + }; +} +{%- elsif flavor contains "typescript" -%} +import { + RunInput, + FunctionRunResult, +} from "../generated/api"; + +type Configuration = {}; + +export function run(input: RunInput): FunctionRunResult { + const configuration: Configuration = JSON.parse( + input?.deliveryOptionGenerator?.metafield?.value ?? "{}" + ); + + 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/index.test.liquid b/order-routing/javascript/local-pickup-delivery-option-generators/default/src/run.test.liquid similarity index 85% 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..30c67421 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,14 +1,15 @@ {%- if flavor contains "vanilla-js" -%} import { describe, it, expect } from 'vitest'; -import deliveryOptionGenerator from './index'; +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: { 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 = "/"