Files
marketplaces/package.json

60 lines
2.2 KiB
JSON
Raw Normal View History

2026-01-18 18:57:06 +04:00
{
"name": "dexarmarket",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"dexar": "ng serve --configuration=development --port 4200",
"start:dexar": "ng serve --configuration=development --port 4200",
"build": "ng build",
"build:dexar": "ng build --configuration=production",
"test": "ng test --watch=false --browsers=ChromeHeadlessNoSandbox",
"test:coverage": "ng test --watch=false --browsers=ChromeHeadlessNoSandbox --code-coverage",
2026-01-18 18:57:06 +04:00
"watch": "ng build --watch --configuration development",
"arch:check:boundaries": "node tools/architecture/check-boundaries.mjs",
"arch:check:cycles": "npx --yes madge --circular --extensions ts src/app --ts-config tsconfig.app.json",
2026-07-10 15:55:38 +04:00
"arch:check": "npm run arch:check:boundaries ; npm run arch:check:cycles",
"barry": "barry-cache",
"barry:validate": "barry-cache validate",
"barry:resume": "barry-cache resume",
"barry:finalize": "barry-cache finalize",
feat: stand up E2E harness, fix a real bootstrap bug it found Track Q Q1/Q4 (docs/PRODUCT-PLAN-v3.1-DELIVERY-PLAN.md). No E2E existed before this. Playwright chosen - no existing test runner preference, and it needs zero extra infra beyond the dev server this repo already has. - playwright.config.ts, package.json e2e/e2e:ui/e2e:report scripts - e2e/smoke.spec.ts app boots, no console errors (network 404s from the absent backend are filtered - expected, not a bug) - e2e/currency-switch.spec.ts Track Q Q4: switching currency must change the displayed price VALUE, not just the label next to it. Written specifically so the upcoming checkout money-truth rewrite (frontend backlog F10-F16, which replaces client-side FX math with a server-computed total) has a regression net under it before that rewrite starts. The first run found a real, current bug: @marketplaces/auth ships plain tsc output (dist/index.js), not Angular Package Format, so it carries no compiled Ivy DI metadata. Any class-based provider from it - not just the Ed25519 Noop stub, AuthService itself hit the same failure - forces Angular to JIT-compile at runtime, which throws immediately when @angular/compiler isn't loaded. That breaks app bootstrap outright, for real users, not just this test. Fixed here with the minimum honest scope: - src/main.ts: import '@angular/compiler' before bootstrap, so JIT works everywhere the package is injected, not just at one call site - src/app/app.config.ts: useFactory instead of useClass for the Noop Ed25519 provider, since it has zero constructor deps and doesn't need Angular to derive metadata for it at all - angular.json: raised the initial-bundle hard-error budget 1.5MB -> 1.8MB, because the compiler import made a correct build refuse to complete. A build that fails outright is worse than a bundle that's honestly larger than it should be. The real fix belongs in the vitanovaPackages auth repo: publish via ng-packagr so consumers get Ivy-compiled output and none of this is necessary. Do not remove the compiler import until that ships - see the comment left in main.ts. Also fixed a genuine test defect while getting this to a real green: the page renders duplicate .currency-option elements (desktop/mobile variants of the same selector), so the first attempt at this test clicked into a hidden duplicate and silently no-opped. Scoped the click to .currency-dropdown.open and added an explicit poll for the DOM to reflect the new currency before reading it back, rather than trusting a fixed timeout. Verified: 3/3 E2E green, 115/115 unit tests green, arch:check clean, production build succeeds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 13:46:43 +04:00
"barry:failure": "barry-cache failure",
"e2e": "playwright test",
"e2e:ui": "playwright test --ui",
"e2e:report": "playwright show-report"
2026-01-18 18:57:06 +04:00
},
"private": true,
"dependencies": {
"@angular/animations": "22.0.8",
"@angular/cdk": "22.0.6",
"@angular/common": "22.0.8",
"@angular/compiler": "22.0.8",
"@angular/core": "22.0.8",
"@angular/forms": "22.0.8",
"@angular/platform-browser": "22.0.8",
"@angular/router": "22.0.8",
"@angular/service-worker": "22.0.8",
feat: stand up E2E harness, fix a real bootstrap bug it found Track Q Q1/Q4 (docs/PRODUCT-PLAN-v3.1-DELIVERY-PLAN.md). No E2E existed before this. Playwright chosen - no existing test runner preference, and it needs zero extra infra beyond the dev server this repo already has. - playwright.config.ts, package.json e2e/e2e:ui/e2e:report scripts - e2e/smoke.spec.ts app boots, no console errors (network 404s from the absent backend are filtered - expected, not a bug) - e2e/currency-switch.spec.ts Track Q Q4: switching currency must change the displayed price VALUE, not just the label next to it. Written specifically so the upcoming checkout money-truth rewrite (frontend backlog F10-F16, which replaces client-side FX math with a server-computed total) has a regression net under it before that rewrite starts. The first run found a real, current bug: @marketplaces/auth ships plain tsc output (dist/index.js), not Angular Package Format, so it carries no compiled Ivy DI metadata. Any class-based provider from it - not just the Ed25519 Noop stub, AuthService itself hit the same failure - forces Angular to JIT-compile at runtime, which throws immediately when @angular/compiler isn't loaded. That breaks app bootstrap outright, for real users, not just this test. Fixed here with the minimum honest scope: - src/main.ts: import '@angular/compiler' before bootstrap, so JIT works everywhere the package is injected, not just at one call site - src/app/app.config.ts: useFactory instead of useClass for the Noop Ed25519 provider, since it has zero constructor deps and doesn't need Angular to derive metadata for it at all - angular.json: raised the initial-bundle hard-error budget 1.5MB -> 1.8MB, because the compiler import made a correct build refuse to complete. A build that fails outright is worse than a bundle that's honestly larger than it should be. The real fix belongs in the vitanovaPackages auth repo: publish via ng-packagr so consumers get Ivy-compiled output and none of this is necessary. Do not remove the compiler import until that ships - see the comment left in main.ts. Also fixed a genuine test defect while getting this to a real green: the page renders duplicate .currency-option elements (desktop/mobile variants of the same selector), so the first attempt at this test clicked into a hidden duplicate and silently no-opped. Scoped the click to .currency-dropdown.open and added an explicit poll for the DOM to reflect the new currency before reading it back, rather than trusting a fixed timeout. Verified: 3/3 E2E green, 115/115 unit tests green, arch:check clean, production build succeeds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 13:46:43 +04:00
"@marketplaces/auth": "git+https://sources.vitanova.network/sdarbinyan/vitanovaPackages.git#release/auth",
feat: start @marketplaces/payment implementation package.json already had @marketplaces/payment added (uncommitted) when this started. Wired it in. - app.config.ts: provideMarketplacesPayment(). apiUrl is environment.qrApiUrl with its trailing /api stripped - found and fixed a real bug while wiring this: qrApiUrl already ends in /api, and the package's default paymentsPath is '/api/v1/payments', so passing qrApiUrl unchanged would have silently doubled the path to .../api/api/v1/payments. Confirmed by reading the package's baseUrl() concatenation directly, not guessed. marketplaceDomain is a plain closure (not TenantResolverService) since provideMarketplacesPayment runs outside the injector. - cart.component.ts: createPaymentIntent() and startPolling() now go through MARKETPLACES_PAYMENT_GATEWAY instead of api.service.ts's createPaymentIntent/checkCartPaymentStatus/checkCartCardPaymentStatus (our own earlier inferred contract, now superseded by the package's real, published one - POST/GET {qrApiUrl}/api/v1/payments). Deliberately did NOT swap to the package's own <mp-payment> UI component - that has a different UX paradigm entirely (window.open for redirects instead of an iframe popup, client-side QR generation instead of an external image service) and replacing the existing, already-tested 769-line popup state machine wholesale is a separate, much larger change than "wire the new package in." Only the I/O layer moved; the surrounding state machine (paymentStatus, checkoutInFlight, timeout/success/error handling, bank-iframe UX) is untouched. Response shape differs from the legacy provider: the package's PaymentStatus is a fixed union (created/pending/authorized/paid/failed/ cancelled/expired), not a free-form string+code pair - simplified the status-check conditionals accordingly and added 'authorized' as a second success state (PaymentResult's own status union), which the legacy check didn't have. The package also carries no TTL/expiry field on its response, unlike the legacy provider's qrTTL - polling duration now falls back to PAYMENT_MIN_POLL_SECONDS alone; flagged in a comment. - api.service.ts's createPaymentIntent and its QrCreateResponse-based resolvePaymentQrId/resolvePaymentQrUrl/resolvePaymentLink/ resolveBankPaymentUrl helpers are now dead code. Left in place rather than deleted in the same pass that adds a new external dependency, so a revert doesn't also need to resurrect deleted code. Verified: production build succeeds, 247/247 unit tests, arch:check clean. E2E: 2 of 7 tests currently fail (checkout-request-shape.spec.ts, checkout-idempotent-click.spec.ts), and this is disclosed honestly rather than hidden. Root cause, confirmed by tracing real network requests: the customer-session cookie fake these tests rely on stops working somewhere between the cookie being demonstrably present in the browser (context.cookies(), and document.cookie read from a plain page on the same origin) and Angular's own AuthService reading it - the session-check request never fires at all. This reproduces with or without this session's payment changes (checkout-idempotent-click.spec.ts doesn't touch payment creation and fails the same way), so it is not a regression introduced here, but it is unresolved. Tried switching context.addCookies from {domain,path} to {url} form (the standard fix for this class of Playwright cookie issue) - did not fix it, kept anyway as the more correct form. Documented as a known, unresolved issue directly in both spec files and e2e/README.md rather than deleting or silently marking the tests skip - the request-shape assertions those tests make are still correct, they are just currently unverifiable through this harness. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 09:37:16 +04:00
"@marketplaces/payment": "git+https://sources.vitanova.network/sdarbinyan/vitanovaPackages.git#release/payment",
2026-01-18 18:57:06 +04:00
"rxjs": "~7.8.0",
"tslib": "^2.8.0",
"zone.js": "~0.16.0"
},
"devDependencies": {
"@angular/build": "22.0.8",
"@angular/cli": "22.0.8",
"@angular/compiler-cli": "22.0.8",
feat: stand up E2E harness, fix a real bootstrap bug it found Track Q Q1/Q4 (docs/PRODUCT-PLAN-v3.1-DELIVERY-PLAN.md). No E2E existed before this. Playwright chosen - no existing test runner preference, and it needs zero extra infra beyond the dev server this repo already has. - playwright.config.ts, package.json e2e/e2e:ui/e2e:report scripts - e2e/smoke.spec.ts app boots, no console errors (network 404s from the absent backend are filtered - expected, not a bug) - e2e/currency-switch.spec.ts Track Q Q4: switching currency must change the displayed price VALUE, not just the label next to it. Written specifically so the upcoming checkout money-truth rewrite (frontend backlog F10-F16, which replaces client-side FX math with a server-computed total) has a regression net under it before that rewrite starts. The first run found a real, current bug: @marketplaces/auth ships plain tsc output (dist/index.js), not Angular Package Format, so it carries no compiled Ivy DI metadata. Any class-based provider from it - not just the Ed25519 Noop stub, AuthService itself hit the same failure - forces Angular to JIT-compile at runtime, which throws immediately when @angular/compiler isn't loaded. That breaks app bootstrap outright, for real users, not just this test. Fixed here with the minimum honest scope: - src/main.ts: import '@angular/compiler' before bootstrap, so JIT works everywhere the package is injected, not just at one call site - src/app/app.config.ts: useFactory instead of useClass for the Noop Ed25519 provider, since it has zero constructor deps and doesn't need Angular to derive metadata for it at all - angular.json: raised the initial-bundle hard-error budget 1.5MB -> 1.8MB, because the compiler import made a correct build refuse to complete. A build that fails outright is worse than a bundle that's honestly larger than it should be. The real fix belongs in the vitanovaPackages auth repo: publish via ng-packagr so consumers get Ivy-compiled output and none of this is necessary. Do not remove the compiler import until that ships - see the comment left in main.ts. Also fixed a genuine test defect while getting this to a real green: the page renders duplicate .currency-option elements (desktop/mobile variants of the same selector), so the first attempt at this test clicked into a hidden duplicate and silently no-opped. Scoped the click to .currency-dropdown.open and added an explicit poll for the DOM to reflect the new currency before reading it back, rather than trusting a fixed timeout. Verified: 3/3 E2E green, 115/115 unit tests green, arch:check clean, production build succeeds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 13:46:43 +04:00
"@playwright/test": "^1.62.1",
"@types/jasmine": "~5.1.0",
fix(admin): products canDeactivate guard, unblock npm, drop dead deps RC-01 Phase 1 mechanical fixes (verified against current repo state, not blindly reapplied from TODO.md): - admin/products create/edit/duplicate now protected by an unsaved- changes guard (adminProductDirtyGuard), mirroring the existing categories pattern. AdminProductsFacade had zero dirty-tracking before this - added a dirty signal, set true on updateDraft(), cleared on load/create/successful save. Added confirmLeaveUnsaved to the adminProducts i18n section (en/ru/hy) - categories already had its own copy of this key, products didn't. - barry-cache bumped ^0.1.0 -> ^0.9.3 (the pinned range no longer resolved on the registry - ETARGET - which had been silently blocking every npm install/uninstall all cycle). - Removed primeng/primeicons (npm uninstall, now unblocked) - the only consumer (items-carousel) was already deleted in RC PERF-01. - Removed core/search/services/search-history.service.ts, a dead 1-line re-export with zero importers (verified: the real implementation is features/search/services/search-history.service.ts, used by search.facade.ts). Left core/search/models/* alone - those ARE live, imported by catalog components. Verified before touching: HeaderConfig.showProfile toggle is already removed from the header-section editor template (TODO.md was stale on this one) - no change needed, will correct the tracking doc separately. tsc --noEmit clean, npm run build green (bundle unchanged, primeng was already tree-shaken out, this just removes the dead dependency declaration itself). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 20:04:51 +04:00
"barry-cache": "^0.9.3",
"istanbul-lib-instrument": "^6.0.3",
"jasmine-core": "~5.5.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "^2.2.1",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~6.0.3"
2026-01-18 18:57:06 +04:00
}
}