Spec modularization: - Add (define-module :name) markers to primitives.sx creating 11 modules (7 core, 4 stdlib). Bootstrappers can now selectively include modules. - Add parse_primitives_by_module() to boundary_parser.py. - Remove split-ids primitive; inline at 4 call sites in blog/market queries. Python file split: - primitives.py: slimmed to registry + core primitives only (~350 lines) - primitives_stdlib.py: NEW — stdlib primitives (format, text, style, debug) - primitives_ctx.py: NEW — extracted 12 page context builders from IO - primitives_io.py: add register_io_handler decorator, auto-derive IO_PRIMITIVES from registry, move sync IO bridges here JS parity fixes: - = uses === (strict equality), != uses !== - round supports optional ndigits parameter - concat uses nil-check not falsy-check (preserves 0, "", false) - escape adds single quote entity (') matching Python/markupsafe - assert added (was missing from JS entirely) Bootstrapper modularization: - PRIMITIVES_JS_MODULES / PRIMITIVES_PY_MODULES dicts keyed by module - --modules CLI flag for selective inclusion (core.* always included) - Regenerated sx-ref.js and sx_ref.py with all fixes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
17 lines
692 B
Plaintext
17 lines
692 B
Plaintext
;; Market service — inter-service data queries
|
|
|
|
(defquery marketplaces-for-container (&key type id)
|
|
"Marketplaces attached to a container (page, etc)."
|
|
(service "market" "marketplaces-for-container"
|
|
:container-type type :container-id id))
|
|
|
|
(defquery products-by-ids (&key ids)
|
|
"Return product details for comma-separated IDs."
|
|
(service "market-data" "products-by-ids"
|
|
:ids (map parse-int (filter (fn (s) (not (empty? s))) (split (str ids) ",")))))
|
|
|
|
(defquery marketplaces-by-ids (&key ids)
|
|
"Return marketplace data for comma-separated IDs."
|
|
(service "market-data" "marketplaces-by-ids"
|
|
:ids (map parse-int (filter (fn (s) (not (empty? s))) (split (str ids) ",")))))
|