2026-01-18 18:57:06 +04:00
|
|
|
{
|
|
|
|
|
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
|
|
|
"version": 1,
|
|
|
|
|
"newProjectRoot": "projects",
|
|
|
|
|
"projects": {
|
|
|
|
|
"Dexarmarket": {
|
|
|
|
|
"projectType": "application",
|
|
|
|
|
"schematics": {
|
|
|
|
|
"@schematics/angular:component": {
|
|
|
|
|
"style": "scss"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"root": "",
|
|
|
|
|
"sourceRoot": "src",
|
|
|
|
|
"prefix": "app",
|
|
|
|
|
"architect": {
|
|
|
|
|
"build": {
|
|
|
|
|
"builder": "@angular/build:application",
|
|
|
|
|
"options": {
|
|
|
|
|
"outputPath": "dist/dexarmarket",
|
|
|
|
|
"browser": "src/main.ts",
|
|
|
|
|
"polyfills": [
|
|
|
|
|
"zone.js"
|
|
|
|
|
],
|
|
|
|
|
"tsConfig": "tsconfig.app.json",
|
|
|
|
|
"inlineStyleLanguage": "scss",
|
|
|
|
|
"assets": [
|
|
|
|
|
{
|
|
|
|
|
"glob": "**/*",
|
|
|
|
|
"input": "public"
|
2026-07-05 02:44:04 +04:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"glob": "**/*",
|
|
|
|
|
"input": "src/assets",
|
|
|
|
|
"output": "assets"
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"styles": [
|
|
|
|
|
"src/styles.scss"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"configurations": {
|
|
|
|
|
"production": {
|
|
|
|
|
"fileReplacements": [
|
|
|
|
|
{
|
|
|
|
|
"replace": "src/environments/environment.ts",
|
|
|
|
|
"with": "src/environments/environment.production.ts"
|
2026-06-21 23:42:39 +04:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"replace": "src/app/interceptors/mock-data.interceptor.ts",
|
|
|
|
|
"with": "src/app/interceptors/mock-data.interceptor.production.ts"
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"styles": [
|
|
|
|
|
"src/styles.scss",
|
|
|
|
|
"src/styles/themes/dexar.theme.scss"
|
|
|
|
|
],
|
|
|
|
|
"budgets": [
|
|
|
|
|
{
|
|
|
|
|
"type": "initial",
|
2026-07-09 02:29:12 +04:00
|
|
|
"maximumWarning": "700kB",
|
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
|
|
|
"maximumError": "1.8MB"
|
2026-01-18 18:57:06 +04:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"type": "anyComponentStyle",
|
2026-05-19 02:07:39 +04:00
|
|
|
"maximumWarning": "40kB",
|
|
|
|
|
"maximumError": "50kB"
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"outputHashing": "all",
|
|
|
|
|
"optimization": {
|
|
|
|
|
"scripts": true,
|
|
|
|
|
"styles": {
|
|
|
|
|
"minify": true,
|
|
|
|
|
"inlineCritical": true
|
|
|
|
|
},
|
|
|
|
|
"fonts": {
|
|
|
|
|
"inline": true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"sourceMap": false,
|
|
|
|
|
"namedChunks": false,
|
|
|
|
|
"extractLicenses": true,
|
|
|
|
|
"serviceWorker": "ngsw-config.json"
|
|
|
|
|
},
|
|
|
|
|
"development": {
|
|
|
|
|
"styles": [
|
|
|
|
|
"src/styles.scss",
|
|
|
|
|
"src/styles/themes/dexar.theme.scss"
|
|
|
|
|
],
|
|
|
|
|
"optimization": false,
|
|
|
|
|
"extractLicenses": false,
|
|
|
|
|
"sourceMap": true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"defaultConfiguration": "production"
|
|
|
|
|
},
|
|
|
|
|
"serve": {
|
|
|
|
|
"options": {
|
2026-05-19 02:01:36 +04:00
|
|
|
"allowedHosts": [
|
|
|
|
|
"dexarmarket.ru",
|
|
|
|
|
"dexar.market",
|
2026-07-05 00:38:21 +04:00
|
|
|
"localhost"
|
2026-07-05 01:36:21 +04:00
|
|
|
]
|
2026-01-18 18:57:06 +04:00
|
|
|
},
|
|
|
|
|
"builder": "@angular/build:dev-server",
|
|
|
|
|
"configurations": {
|
|
|
|
|
"production": {
|
|
|
|
|
"buildTarget": "Dexarmarket:build:production"
|
|
|
|
|
},
|
|
|
|
|
"development": {
|
2026-07-05 02:44:04 +04:00
|
|
|
"proxyConfig": "proxy.conf.json",
|
2026-01-18 18:57:06 +04:00
|
|
|
"buildTarget": "Dexarmarket:build:development"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"defaultConfiguration": "development"
|
|
|
|
|
},
|
|
|
|
|
"extract-i18n": {
|
|
|
|
|
"builder": "@angular/build:extract-i18n"
|
feat(project-editor): add field-schema registry + test harness
Milestone 1 of the Configuration Engine sprint.
- Add schema/ registry: FieldSchema model, SECTION_FIELD_SCHEMAS covering
every editable field per section, and EditorSchemaService (getFields,
getField, all, getByPath). Single source of truth for labels, defaults,
and validator references; sections stay hand-authored (metadata-augmented).
- Stand up Karma + Jasmine (ng test) with a headless, sandbox-free Chrome
launcher; add tsconfig.spec.json, karma.conf.js, angular.json test target,
and npm "test" script. First spec: editor-schema.service.spec (7 passing).
No behavior change. Gate: arch:check, tsc --noEmit, npm test (7/7), build all green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 01:51:13 +04:00
|
|
|
},
|
|
|
|
|
"test": {
|
|
|
|
|
"builder": "@angular/build:karma",
|
|
|
|
|
"options": {
|
|
|
|
|
"polyfills": [
|
|
|
|
|
"zone.js",
|
|
|
|
|
"zone.js/testing"
|
|
|
|
|
],
|
|
|
|
|
"tsConfig": "tsconfig.spec.json",
|
|
|
|
|
"karmaConfig": "karma.conf.js",
|
|
|
|
|
"inlineStyleLanguage": "scss",
|
|
|
|
|
"assets": [
|
|
|
|
|
{
|
|
|
|
|
"glob": "**/*",
|
|
|
|
|
"input": "public"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"glob": "**/*",
|
|
|
|
|
"input": "src/assets",
|
|
|
|
|
"output": "assets"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"styles": [
|
|
|
|
|
"src/styles.scss"
|
|
|
|
|
]
|
|
|
|
|
}
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-05-19 02:07:39 +04:00
|
|
|
}
|