@jskit-ai/agent-docs 0.1.279 → 0.1.281
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/guide/agent/app-extras/assistant-conversation.md +5 -1
- package/guide/agent/app-extras/assistant.md +123 -0
- package/guide/agent/app-extras/realtime.md +20 -10
- package/guide/agent/app-setup/authentication.md +54 -4
- package/guide/agent/app-setup/database-layer.md +108 -35
- package/guide/agent/app-setup/existing-application-migration.md +7 -1
- package/guide/agent/app-setup/material-3-migration.md +38 -9
- package/guide/agent/app-setup/multi-homing.md +14 -4
- package/guide/agent/app-setup/upgrading-jskit.md +105 -0
- package/guide/agent/app-setup/users.md +9 -1
- package/guide/agent/framework/client-features.md +35 -1
- package/guide/agent/framework/material-3.md +111 -71
- package/guide/agent/framework/sanity-checks.md +181 -0
- package/guide/agent/framework/translation.md +4 -0
- package/guide/agent/framework/typed-features.md +222 -120
- package/guide/agent/framework/ui-operations.md +3 -1
- package/guide/agent/index.md +3 -0
- package/package.json +2 -2
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/PATTERN.md +6 -2
- package/patterns/minimal-foundation/example/AGENTS.md +22 -5
- package/patterns/minimal-foundation/example/package.json +6 -6
- package/patterns/minimal-foundation/example/playwright.config.mjs +3 -30
- package/patterns/minimal-foundation/example/server.js +7 -1
- package/patterns/minimal-foundation/example/src/main.js +3 -2
- package/patterns/minimal-foundation/example/tests/e2e/startup.spec.ts +13 -0
- package/patterns/minimal-foundation/example/vite.config.mjs +3 -1
- package/patterns/shell-foundation/PATTERN.md +4 -1
- package/patterns/shell-foundation/example/AGENTS.md +22 -5
- package/patterns/shell-foundation/example/package.json +7 -7
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/patterns/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +3 -0
- package/patterns/shell-foundation/example/playwright.config.mjs +3 -30
- package/patterns/shell-foundation/example/server.js +7 -1
- package/patterns/shell-foundation/example/src/components/menus/SectionTabLinkItem.vue +42 -0
- package/patterns/shell-foundation/example/src/main.js +3 -2
- package/patterns/shell-foundation/example/src/pages/home.vue +1 -1
- package/patterns/shell-foundation/example/src/views/NotFound.vue +1 -1
- package/patterns/shell-foundation/example/tests/e2e/startup.spec.ts +13 -0
- package/patterns/shell-foundation/example/vite.config.mjs +3 -1
- package/reference/autogen/PATTERN_INDEX.md +37 -37
- package/reference/autogen/packages/agent-docs.md +4 -0
- package/reference/autogen/packages/architecture-inspector.md +1 -0
- package/reference/autogen/packages/assistant-runtime.md +28 -3
- package/reference/autogen/packages/auth-provider-local-core.md +2 -1
- package/reference/autogen/packages/auth-web.md +10 -0
- package/reference/autogen/packages/connectors-catalog.md +8 -0
- package/reference/autogen/packages/crud-core.md +3 -0
- package/reference/autogen/packages/database-runtime.md +33 -0
- package/reference/autogen/packages/http-web.md +0 -4
- package/reference/autogen/packages/json-rest-api-core.md +17 -4
- package/reference/autogen/packages/kernel.md +37 -2
- package/reference/autogen/packages/material-web.md +2 -1
- package/reference/autogen/packages/oidc-issuer-core.md +0 -1
- package/reference/autogen/packages/realtime.md +8 -5
- package/reference/autogen/packages/shell-web.md +88 -3
- package/reference/autogen/packages/users-web.md +5 -2
- package/reference/autogen/packages/workspaces-core.md +3 -1
- package/reference/autogen/tooling/jskit-catalog.md +122 -5
- package/reference/autogen/tooling/testUtils.md +15 -1
- package/skills/jskit/SKILL.md +17 -5
- package/skills/jskit/references/client-features.md +35 -1
- package/skills/jskit/references/existing-application-migration.md +7 -1
- package/skills/jskit/references/heuristics/INDEX.md +3 -1
- package/skills/jskit/references/heuristics/row-policies.md +3 -3
- package/skills/jskit/references/heuristics/typed-features.md +7 -7
- package/skills/jskit/references/heuristics/ui-testing.md +27 -21
- package/skills/jskit/references/material-3.md +111 -71
- package/skills/jskit/references/multi-homing.md +14 -4
- package/skills/jskit/references/pattern-index.md +37 -37
- package/skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md +6 -2
- package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +22 -5
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +6 -6
- package/skills/jskit/references/patterns/app/minimal-foundation/example/playwright.config.mjs +3 -30
- package/skills/jskit/references/patterns/app/minimal-foundation/example/server.js +7 -1
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/main.js +3 -2
- package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/e2e/startup.spec.ts +13 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/vite.config.mjs +3 -1
- package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +4 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +22 -5
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +7 -7
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +3 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/playwright.config.mjs +3 -30
- package/skills/jskit/references/patterns/app/shell-foundation/example/server.js +7 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/menus/SectionTabLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/main.js +3 -2
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home.vue +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/views/NotFound.vue +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/e2e/startup.spec.ts +13 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/vite.config.mjs +3 -1
- package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
- package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +18 -5
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/components/AppBrand.vue +17 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/login.vue +2 -2
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/reset-password.vue +2 -2
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/signout.vue +2 -2
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/LoginView.vue +6 -1
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/ResetPasswordView.vue +6 -1
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/SignOutView.vue +6 -1
- package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
- package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
- package/skills/jskit/references/patterns/connectors/aws-storage-queries/example/formats/package.json +1 -1
- package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console.vue +1 -1
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
- package/skills/jskit/references/patterns/database/mysql-application/PATTERN.md +34 -24
- package/skills/jskit/references/patterns/database/mysql-application/example/package.json +3 -2
- package/skills/jskit/references/patterns/database/mysql-application/example/tests/e2e/databases.js +25 -0
- package/skills/jskit/references/patterns/database/postgres-application/PATTERN.md +12 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/package.json +3 -2
- package/skills/jskit/references/patterns/database/postgres-application/example/tests/e2e/databases.js +25 -0
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
- package/skills/jskit/references/patterns/rewards/google-rewarded/example/googlePublisherTag.js +5 -2
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
- package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +11 -6
- package/skills/jskit/references/patterns/shell/application-shell/example/src/components/menus/SectionTabLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home.vue +1 -1
- package/skills/jskit/references/patterns/shell/application-shell/example/src/views/NotFound.vue +1 -1
- package/skills/jskit/references/patterns/ui/page-and-placement/PATTERN.md +6 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports.vue +9 -4
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/placementTopology.js +5 -3
- package/skills/jskit/references/patterns/users/account-settings/PATTERN.md +24 -3
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsNotificationsSection.vue +1 -1
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue +2 -1
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue +3 -2
- package/skills/jskit/references/patterns/users/account-settings/example/src/pages/account/[section].vue +23 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/pages/account.vue +4 -3
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/packages/main/src/client/components/AccountPendingInvitesCue.vue +3 -3
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/admin/root.vue +1 -1
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/app/root.vue +1 -1
- package/skills/jskit/references/sanity-checks.md +181 -0
- package/skills/jskit/references/translation.md +4 -0
- package/skills/jskit/references/typed-features.md +222 -120
- package/skills/jskit/references/ui-operations.md +3 -1
- package/skills/jskit/references/patterns/database/mysql-application/example/tests/browser/database.js +0 -68
|
@@ -536,6 +536,10 @@ Local functions
|
|
|
536
536
|
- `ignoreBootstrapStep()`
|
|
537
537
|
- `installAppPlugins(app, appPlugins = [])`
|
|
538
538
|
- `isSurfaceRootRecord(record)`
|
|
539
|
+
- `hostsChildViews(record)`
|
|
540
|
+
- `hashScrollMargin(hash)`
|
|
541
|
+
- `isLazyRouteComponent(component)`
|
|
542
|
+
- `preloadOpeningRouteComponents(router, fallbackRoute)`
|
|
539
543
|
|
|
540
544
|
### `client/shellRouting.js`
|
|
541
545
|
Exports
|
|
@@ -579,6 +583,9 @@ Exports
|
|
|
579
583
|
Exports
|
|
580
584
|
- `installedClientModules`
|
|
581
585
|
- `bootInstalledClientModules(context = {})`
|
|
586
|
+
- `VUETIFY_LAYER_ORDER`
|
|
587
|
+
- `namedCascadeLayers(css)`
|
|
588
|
+
- `checkVuetifyLayerOrder(stylesheets = [])`
|
|
582
589
|
- `CLIENT_BOOTSTRAP_VIRTUAL_ID`
|
|
583
590
|
- `CLIENT_BOOTSTRAP_RESOLVED_ID`
|
|
584
591
|
- `createVirtualModuleSource(clientModules, localePackageIds)`
|
|
@@ -593,13 +600,18 @@ Exports
|
|
|
593
600
|
- `resolveInstalledViteProxyEntries(installedPackages = [], { proxyTarget = "" } = {})`
|
|
594
601
|
- `createJskitClientBootstrapPlugin({ proxyTarget = "" } = {})`
|
|
595
602
|
Local functions
|
|
603
|
+
- `builtPageStylesheets(bundle)`
|
|
596
604
|
- `isLocalScopePackageId(value)`
|
|
597
605
|
- `readJsonFile(filePath, fallback)`
|
|
598
606
|
- `hasClientExport(packageJson)`
|
|
599
607
|
- `isPathInsideRoot(rootPath, candidatePath)`
|
|
600
608
|
- `splitSpecifierSuffix(source)`
|
|
609
|
+
- `exportFile(target)`
|
|
610
|
+
- `resolveClientBootImports(installedPackage, { packageMetadataUiRoutes, packageMetadataClientProviders })`
|
|
601
611
|
- `resolveClientModulesFromInstalledPackages(installedPackages = [])`
|
|
602
612
|
- `normalizeClientModulePackageMetadataEntries(value)`
|
|
613
|
+
- `normalizeBootProviders(bootImports)`
|
|
614
|
+
- `clientBootSpecifiers(entry)`
|
|
603
615
|
- `resolveClientRuntimeDedupeSpecifiers(userResolveConfig = {})`
|
|
604
616
|
|
|
605
617
|
### `client/vite/index.js`
|
|
@@ -637,7 +649,10 @@ Exports
|
|
|
637
649
|
Local functions
|
|
638
650
|
- `normalizeActionDomain(value, { context = "domain" } = {})`
|
|
639
651
|
- `normalizeStringArray(value, fieldName)`
|
|
640
|
-
- `
|
|
652
|
+
- `schemaFieldDefinitions(value)`
|
|
653
|
+
- `refuseOneOfFields(fields, fieldName, parentPath = "")`
|
|
654
|
+
- `refuseOneOfField(definition, fieldName, path)`
|
|
655
|
+
- `normalizeActionSchema(value, fieldName, { required = false, defaultMode = "", refuseOneOf = false } = {})`
|
|
641
656
|
- `normalizeActionPermission(permission, actionId)`
|
|
642
657
|
- `normalizeActionExtensions(value)`
|
|
643
658
|
- `normalizeActionEvents(value, actionId)`
|
|
@@ -789,6 +804,12 @@ Local functions
|
|
|
789
804
|
- `emptyInput()`
|
|
790
805
|
- `handlerAsGiven(handler)`
|
|
791
806
|
|
|
807
|
+
### `server/http/lib/deepFrozen.js`
|
|
808
|
+
Exports
|
|
809
|
+
- `isDeepFrozen(value)`
|
|
810
|
+
Local functions
|
|
811
|
+
- `isFrozenThroughout(node, checked)`
|
|
812
|
+
|
|
792
813
|
### `server/http/lib/errors.js`
|
|
793
814
|
Exports
|
|
794
815
|
- `HttpKernelError`
|
|
@@ -822,6 +843,10 @@ Exports
|
|
|
822
843
|
- `type ActionCatalogue`
|
|
823
844
|
- `type RuntimeFastify`
|
|
824
845
|
Local functions
|
|
846
|
+
- `sharedValidationSchema(schema)`
|
|
847
|
+
- `namesEveryType(value)`
|
|
848
|
+
- `isSharedResponseSchema(entry)`
|
|
849
|
+
- `copyRouteSchema(schema)`
|
|
825
850
|
- `toFastifyRouteOptions(route)`
|
|
826
851
|
- `shouldStripFastifyBodySchema(route, schema)`
|
|
827
852
|
- `normalizeHeaderValue(value)`
|
|
@@ -851,6 +876,7 @@ Exports
|
|
|
851
876
|
- `resolveRouteValidatorOptions({ method = "", path = "", options = {} } = {})`
|
|
852
877
|
Local functions
|
|
853
878
|
- `stripJsonRestTransportExtensions(value)`
|
|
879
|
+
- `stripSchemaCopy(value)`
|
|
854
880
|
- `normalizeRouteSchemaSection(value, { context = "route section", defaultMode = "patch" } = {})`
|
|
855
881
|
- `normalizeResponseDefinition(value, { context = "route responses" } = {})`
|
|
856
882
|
- `normalizeAdvancedFastifySchema(value, { context = "route validator" } = {})`
|
|
@@ -860,9 +886,14 @@ Local functions
|
|
|
860
886
|
### `server/http/responseSerializerFactory.js`
|
|
861
887
|
Exports
|
|
862
888
|
- `createCachedResponseSerializerFactory(buildSerializer)`
|
|
889
|
+
- `schemaCacheKey(schema)`
|
|
863
890
|
Local functions
|
|
891
|
+
- `schemaTools()`
|
|
864
892
|
- `isJsonValue(value, ancestors = new Set())`
|
|
865
|
-
- `
|
|
893
|
+
- `assertValidSchema(schema, name)`
|
|
894
|
+
- `filedSchemaId(schema, fallback)`
|
|
895
|
+
- `everyRefResolves(schema, externalSchemas)`
|
|
896
|
+
- `compiledOnFirstUse(compile, options, key)`
|
|
866
897
|
|
|
867
898
|
### `server/http/securityHeaders.js`
|
|
868
899
|
Exports
|
|
@@ -1046,6 +1077,7 @@ Exports
|
|
|
1046
1077
|
Local functions
|
|
1047
1078
|
- `fileLockError(message = "", code = FILE_LOCK_ERROR_CODE)`
|
|
1048
1079
|
- `normalizedAbsolutePath(value = "", label = "path", errorCode = FILE_LOCK_ERROR_CODE)`
|
|
1080
|
+
- `lockThroughDescriptor(fd, cwd)`
|
|
1049
1081
|
|
|
1050
1082
|
### `server/support/importFreshModuleFromAbsolutePath.js`
|
|
1051
1083
|
Exports
|
|
@@ -1137,3 +1169,6 @@ Local functions
|
|
|
1137
1169
|
- `resolveFileDependencyRoot(appRoot, specifier = "")`
|
|
1138
1170
|
- `resolveInstalledPackageRoot({ appRoot, packageId, parentPackageRoot = "" })`
|
|
1139
1171
|
- `resolvePackageRoots({ appRoot, packageId, directSpecifier = "", parentPackageRoot = "" })`
|
|
1172
|
+
- `fileStamp(filePath)`
|
|
1173
|
+
- `stampsOf(filePaths)`
|
|
1174
|
+
- `walkInstalledPackages(normalizedAppRoot)`
|
|
@@ -33,8 +33,9 @@ Exports
|
|
|
33
33
|
### `src/client/index.js`
|
|
34
34
|
Exports
|
|
35
35
|
- `materialThemes`
|
|
36
|
-
- `createMaterialVuetifyOptions({ seed = DEFAULT_SEED, colors = {}, icons = {} } = {})`
|
|
36
|
+
- `createMaterialVuetifyOptions({ seed = DEFAULT_SEED, colors = {}, icons = {}, typography = {} } = {})`
|
|
37
37
|
Local functions
|
|
38
|
+
- `typefaceVariables({ brand = ROBOTO_FLEX, plain = ROBOTO_FLEX } = {})`
|
|
38
39
|
- `appIconAliases(icons)`
|
|
39
40
|
|
|
40
41
|
### `src/client/symbols.js`
|
|
@@ -76,6 +76,7 @@ Exports
|
|
|
76
76
|
- `type RuntimeDatabase`
|
|
77
77
|
- `type RuntimeLogger`
|
|
78
78
|
- `type ActorRoomsResolver`
|
|
79
|
+
- `type ActorsRoomsResolver`
|
|
79
80
|
- `type AudienceContributors`
|
|
80
81
|
Local functions
|
|
81
82
|
- `flattenEntries(value)`
|
|
@@ -107,16 +108,17 @@ Exports
|
|
|
107
108
|
|
|
108
109
|
### `src/server/realtimeDelivery.js`
|
|
109
110
|
Exports
|
|
110
|
-
- `createRealtimeDelivery({ io, database, logger, authService, audiences: { mayContribute,
|
|
111
|
+
- `createRealtimeDelivery({ io, database, logger, authService, audiences: { mayContribute, resolveActorsRooms } })`
|
|
111
112
|
- `matchesRealtimeEvent(event)`
|
|
112
113
|
- `type AuthService`
|
|
113
114
|
- `type ActorRoomsResolver`
|
|
115
|
+
- `type ActorsRoomsResolver`
|
|
114
116
|
- `type AudienceContributors`
|
|
115
117
|
Local functions
|
|
116
118
|
- `publicRealtimePayload(event)`
|
|
117
|
-
- `
|
|
118
|
-
- `
|
|
119
|
-
- `
|
|
119
|
+
- `sharedWithinPass(load, keyOf)`
|
|
120
|
+
- `createPassChecks(authService, resolveActorsRooms)`
|
|
121
|
+
- `rememberedActorId(socket)`
|
|
120
122
|
|
|
121
123
|
### `src/server/RealtimeProvider.js`
|
|
122
124
|
Exports
|
|
@@ -133,7 +135,7 @@ Exports
|
|
|
133
135
|
- `REDIS_NAMESPACE_ENV_KEY`
|
|
134
136
|
- `resolveRealtimeRedisUrl(env)`
|
|
135
137
|
- `resolveRealtimeRedisNamespace(env)`
|
|
136
|
-
- `configureSocketIoRedisAdapter(io, { redisUrl = "", redisNamespace = "", logger, createRedisAdapter
|
|
138
|
+
- `configureSocketIoRedisAdapter(io, { redisUrl = "", redisNamespace = "", logger, createRedisAdapter, createRedisConnection })`
|
|
137
139
|
- `closeSocketIoRedisConnections({ pubClient, subClient })`
|
|
138
140
|
- `countConnectedClients(io)`
|
|
139
141
|
Local functions
|
|
@@ -149,6 +151,7 @@ Exports
|
|
|
149
151
|
Exports
|
|
150
152
|
- `type RuntimeRealtime`
|
|
151
153
|
- `type ActorRoomsResolver`
|
|
154
|
+
- `type ActorsRoomsResolver`
|
|
152
155
|
- `type AudienceContributors`
|
|
153
156
|
- `type RealtimeAudienceContributor`
|
|
154
157
|
|
|
@@ -125,15 +125,25 @@ Exports
|
|
|
125
125
|
### `src/client/components/ShellPageActionsTarget.vue`
|
|
126
126
|
Exports
|
|
127
127
|
- None
|
|
128
|
+
Local functions
|
|
129
|
+
- `itemProps(entry)`
|
|
128
130
|
|
|
129
131
|
### `src/client/components/ShellPageTitle.vue`
|
|
130
132
|
Exports
|
|
131
133
|
- None
|
|
132
134
|
|
|
135
|
+
### `src/client/components/ShellPrimaryAction.vue`
|
|
136
|
+
Exports
|
|
137
|
+
- None
|
|
138
|
+
|
|
133
139
|
### `src/client/components/ShellRouteTransition.vue`
|
|
134
140
|
Exports
|
|
135
141
|
- None
|
|
136
142
|
|
|
143
|
+
### `src/client/components/ShellSectionTabLinkItem.vue`
|
|
144
|
+
Exports
|
|
145
|
+
- None
|
|
146
|
+
|
|
137
147
|
### `src/client/components/ShellSurfaceAwareMenuLinkItem.vue`
|
|
138
148
|
Exports
|
|
139
149
|
- None
|
|
@@ -186,6 +196,10 @@ Exports
|
|
|
186
196
|
Exports
|
|
187
197
|
- `useShellOutletPlacements(target, context = {})`
|
|
188
198
|
|
|
199
|
+
### `src/client/composables/useShellPageClose.js`
|
|
200
|
+
Exports
|
|
201
|
+
- `useShellPageClose({ label, close })`
|
|
202
|
+
|
|
189
203
|
### `src/client/composables/useShellPageTitle.js`
|
|
190
204
|
Exports
|
|
191
205
|
- `useShellPageTitle(title)`
|
|
@@ -296,8 +310,10 @@ Exports
|
|
|
296
310
|
- `ShellMenuLinkItem`
|
|
297
311
|
- `ShellSurfaceAwareMenuLinkItem`
|
|
298
312
|
- `ShellTabLinkItem`
|
|
313
|
+
- `ShellSectionTabLinkItem`
|
|
299
314
|
- `ShellPageActions`
|
|
300
315
|
- `ShellPageAction`
|
|
316
|
+
- `ShellPrimaryAction`
|
|
301
317
|
- `ShellListDetail`
|
|
302
318
|
- `ShellUpButton`
|
|
303
319
|
- `ShellPageTitle`
|
|
@@ -305,6 +321,7 @@ Exports
|
|
|
305
321
|
- `useShellAppBar`
|
|
306
322
|
- `useShellLayoutState`
|
|
307
323
|
- `useShellPageTitle`
|
|
324
|
+
- `useShellPageClose`
|
|
308
325
|
- `useShellWindowSizeClass`
|
|
309
326
|
- `useShellNavigation`
|
|
310
327
|
- `leaveApp`
|
|
@@ -350,9 +367,11 @@ Exports
|
|
|
350
367
|
- `createShellNavigationRuntime({ router })`
|
|
351
368
|
- `resolvePageParent(matched)`
|
|
352
369
|
- `resolvePageTitle(matched)`
|
|
370
|
+
- `type ShellPageClose`
|
|
353
371
|
Local functions
|
|
354
372
|
- `normalizeTrail(value)`
|
|
355
373
|
- `cssAttributeValue(value)`
|
|
374
|
+
- `createClaimStack()`
|
|
356
375
|
|
|
357
376
|
### `src/client/navigation/usePaths.js`
|
|
358
377
|
Exports
|
|
@@ -481,10 +500,11 @@ Exports
|
|
|
481
500
|
- `resolveAppPlacementTopologyExport(exported, logger)`
|
|
482
501
|
Local functions
|
|
483
502
|
- `loadAppModule({ importModule, specifier, label, resolve, invalidExportMessage = "", loadFailureMessage, fallback, logger, asyncModuleRecoveryRuntime })`
|
|
484
|
-
- `
|
|
485
|
-
- `
|
|
503
|
+
- `importAppModules()`
|
|
504
|
+
- `loadAppPlacementDefinitions(logger, asyncModuleRecoveryRuntime, pendingImport)`
|
|
505
|
+
- `loadAppPlacementTopology(logger, asyncModuleRecoveryRuntime, pendingImport)`
|
|
486
506
|
- `createErrorConfigToolkit(errorRuntime)`
|
|
487
|
-
- `loadAppErrorConfig(logger, errorRuntime, asyncModuleRecoveryRuntime)`
|
|
507
|
+
- `loadAppErrorConfig(logger, errorRuntime, asyncModuleRecoveryRuntime, pendingImport)`
|
|
488
508
|
- `installVueErrorBridge(vueApp, errorRuntime, logger)`
|
|
489
509
|
- `installRouterErrorBridge(router, errorRuntime, logger)`
|
|
490
510
|
|
|
@@ -552,6 +572,7 @@ Exports
|
|
|
552
572
|
- `resolveShellDrawerPresentation({ modal = false, open = false, desktopClosedMode = "rail" } = {})`
|
|
553
573
|
- `resolveShellDrawerToggleLabel({ modal = false, open = false } = {})`
|
|
554
574
|
- `shellLayoutHasDrawer({ menuSlot = false, menuCount = 0, identityCount = 0, bottomNavigationCount = 0 } = {})`
|
|
575
|
+
- `shellLayoutHasNavigationBar({ bottomNavigationCount = 0, menuCount = 0 } = {})`
|
|
555
576
|
|
|
556
577
|
### `src/client/support/drawerWidth.js`
|
|
557
578
|
Exports
|
|
@@ -602,6 +623,18 @@ Exports
|
|
|
602
623
|
- `VUETIFY_ICONS_KEY`
|
|
603
624
|
- `filledIconAlias(icon, aliases)`
|
|
604
625
|
|
|
626
|
+
### `src/client/support/pageActions.js`
|
|
627
|
+
Exports
|
|
628
|
+
- `NO_SHELL_PAGE_ACTIONS_REGISTRY`
|
|
629
|
+
- `SHELL_PAGE_ACTIONS_REGISTRY_KEY`
|
|
630
|
+
- `createShellPageActionsRegistry({ isCompact })`
|
|
631
|
+
- `overflowEntries(entries, compact)`
|
|
632
|
+
- `type ShellPageActionState`
|
|
633
|
+
- `type ShellPageActionEntry`
|
|
634
|
+
- `type ShellPageActionsRegistry`
|
|
635
|
+
Local functions
|
|
636
|
+
- `documentOrder(left, right)`
|
|
637
|
+
|
|
605
638
|
### `src/client/support/primaryNavigation.js`
|
|
606
639
|
Exports
|
|
607
640
|
- `normalizeComparablePathname(value = "")`
|
|
@@ -654,6 +687,14 @@ Exports
|
|
|
654
687
|
|
|
655
688
|
### fixtures
|
|
656
689
|
|
|
690
|
+
### `fixtures/adaptive-shell/src/ActionsFormPage.vue`
|
|
691
|
+
Exports
|
|
692
|
+
- None
|
|
693
|
+
|
|
694
|
+
### `fixtures/adaptive-shell/src/ActionsPage.vue`
|
|
695
|
+
Exports
|
|
696
|
+
- None
|
|
697
|
+
|
|
657
698
|
### `fixtures/adaptive-shell/src/App.vue`
|
|
658
699
|
Exports
|
|
659
700
|
- None
|
|
@@ -662,6 +703,22 @@ Exports
|
|
|
662
703
|
Exports
|
|
663
704
|
- None
|
|
664
705
|
|
|
706
|
+
### `fixtures/adaptive-shell/src/ButtonStatesPage.vue`
|
|
707
|
+
Exports
|
|
708
|
+
- None
|
|
709
|
+
|
|
710
|
+
### `fixtures/adaptive-shell/src/ComponentsPage.vue`
|
|
711
|
+
Exports
|
|
712
|
+
- None
|
|
713
|
+
Local functions
|
|
714
|
+
- `jumpToLastBooking()`
|
|
715
|
+
|
|
716
|
+
### `fixtures/adaptive-shell/src/FeedbackPage.vue`
|
|
717
|
+
Exports
|
|
718
|
+
- None
|
|
719
|
+
Local functions
|
|
720
|
+
- `press(name)`
|
|
721
|
+
|
|
665
722
|
### `fixtures/adaptive-shell/src/main.js`
|
|
666
723
|
Exports
|
|
667
724
|
- None
|
|
@@ -684,6 +741,10 @@ Exports
|
|
|
684
741
|
Exports
|
|
685
742
|
- `records`
|
|
686
743
|
|
|
744
|
+
### `fixtures/adaptive-shell/src/ReportsPage.vue`
|
|
745
|
+
Exports
|
|
746
|
+
- None
|
|
747
|
+
|
|
687
748
|
### `fixtures/adaptive-shell/src/ScreenPage.vue`
|
|
688
749
|
Exports
|
|
689
750
|
- None
|
|
@@ -692,6 +753,10 @@ Exports
|
|
|
692
753
|
Exports
|
|
693
754
|
- None
|
|
694
755
|
|
|
756
|
+
### `fixtures/adaptive-shell/src/StatusButton.vue`
|
|
757
|
+
Exports
|
|
758
|
+
- None
|
|
759
|
+
|
|
695
760
|
### `fixtures/adaptive-shell/src/StudioPage.vue`
|
|
696
761
|
Exports
|
|
697
762
|
- None
|
|
@@ -701,10 +766,26 @@ Exports
|
|
|
701
766
|
- `theme`
|
|
702
767
|
- `adminTheme`
|
|
703
768
|
|
|
769
|
+
### `fixtures/adaptive-shell/src/TitleClaim.vue`
|
|
770
|
+
Exports
|
|
771
|
+
- None
|
|
772
|
+
|
|
704
773
|
### `fixtures/adaptive-shell/vite.config.mjs`
|
|
705
774
|
Exports
|
|
706
775
|
- None
|
|
707
776
|
|
|
777
|
+
### `fixtures/production-build/src/App.vue`
|
|
778
|
+
Exports
|
|
779
|
+
- None
|
|
780
|
+
|
|
781
|
+
### `fixtures/production-build/src/main.js`
|
|
782
|
+
Exports
|
|
783
|
+
- None
|
|
784
|
+
|
|
785
|
+
### `fixtures/production-build/vite.config.mjs`
|
|
786
|
+
Exports
|
|
787
|
+
- None
|
|
788
|
+
|
|
708
789
|
### patterns
|
|
709
790
|
|
|
710
791
|
### `patterns/application-shell/example/expected-existing/src/App.vue`
|
|
@@ -731,6 +812,10 @@ Exports
|
|
|
731
812
|
Exports
|
|
732
813
|
- None
|
|
733
814
|
|
|
815
|
+
### `patterns/application-shell/example/src/components/menus/SectionTabLinkItem.vue`
|
|
816
|
+
Exports
|
|
817
|
+
- None
|
|
818
|
+
|
|
734
819
|
### `patterns/application-shell/example/src/components/menus/SurfaceAwareMenuLinkItem.vue`
|
|
735
820
|
Exports
|
|
736
821
|
- None
|
|
@@ -34,8 +34,7 @@ Exports
|
|
|
34
34
|
Exports
|
|
35
35
|
- None
|
|
36
36
|
Local functions
|
|
37
|
-
- `
|
|
38
|
-
- `readRouteSection()`
|
|
37
|
+
- `sectionTarget(value)`
|
|
39
38
|
|
|
40
39
|
### `src/client/components/ProfileClientElement.vue`
|
|
41
40
|
Exports
|
|
@@ -213,6 +212,10 @@ Exports
|
|
|
213
212
|
Exports
|
|
214
213
|
- None
|
|
215
214
|
|
|
215
|
+
### `patterns/account-settings/example/src/pages/account/[section].vue`
|
|
216
|
+
Exports
|
|
217
|
+
- None
|
|
218
|
+
|
|
216
219
|
### `patterns/account-settings/example/src/pages/account/index.vue`
|
|
217
220
|
Exports
|
|
218
221
|
- None
|
|
@@ -47,6 +47,8 @@ Exports
|
|
|
47
47
|
- `createRepository({ api })`
|
|
48
48
|
- `normalizeMembershipRecord(payload)`
|
|
49
49
|
- `normalizeMemberSummaryRow(row)`
|
|
50
|
+
Local functions
|
|
51
|
+
- `memberSummaryFromMembership(row)`
|
|
50
52
|
|
|
51
53
|
### `src/server/common/repositories/workspacesRepository.js`
|
|
52
54
|
Exports
|
|
@@ -250,7 +252,7 @@ Exports
|
|
|
250
252
|
Exports
|
|
251
253
|
- `WorkspacesIntegrationsProvider`
|
|
252
254
|
Local functions
|
|
253
|
-
- `resolveWorkspaceRealtimeScopes(workspaceMemberships,
|
|
255
|
+
- `resolveWorkspaceRealtimeScopes(workspaceMemberships, actorIds)`
|
|
254
256
|
|
|
255
257
|
### `src/server/workspacesRuntime.js`
|
|
256
258
|
Exports
|
|
@@ -14,6 +14,45 @@ Use this on demand; do not load the full index at startup.
|
|
|
14
14
|
|
|
15
15
|
### scripts
|
|
16
16
|
|
|
17
|
+
### `scripts/browser-test-build.mjs`
|
|
18
|
+
Exports
|
|
19
|
+
- `buildFrontend({ appRoot = process.cwd(), build = "npm run build", run = runToCompletion } = {})`
|
|
20
|
+
Local functions
|
|
21
|
+
- `seconds(since)`
|
|
22
|
+
- `digest(file)`
|
|
23
|
+
- `buildFingerprint(appRoot, build, env = process.env)`
|
|
24
|
+
- `runToCompletion(command, appRoot)`
|
|
25
|
+
- `lastBuild(appRoot)`
|
|
26
|
+
- `isRunning(pid)`
|
|
27
|
+
- `lockBuild(appRoot)`
|
|
28
|
+
- `isCurrent(appRoot, inputs)`
|
|
29
|
+
|
|
30
|
+
### `scripts/browser-test-servers.mjs`
|
|
31
|
+
Exports
|
|
32
|
+
- None
|
|
33
|
+
Local functions
|
|
34
|
+
- `seconds(since)`
|
|
35
|
+
- `words(command)`
|
|
36
|
+
- `prepareWorkers(appRoot, prepare, workers, baseUrls)`
|
|
37
|
+
- `signInWorkers(appRoot, signIn, baseUrls, environments, signedInStates)`
|
|
38
|
+
- `waitUntilReady(url, server, name)`
|
|
39
|
+
- `stopServers()`
|
|
40
|
+
|
|
41
|
+
### `scripts/browser-test-times.mjs`
|
|
42
|
+
Exports
|
|
43
|
+
- None
|
|
44
|
+
|
|
45
|
+
### `scripts/browser-tests.mjs`
|
|
46
|
+
Exports
|
|
47
|
+
- `SETTINGS_VARIABLE`
|
|
48
|
+
- `browserTestConfig({ testDir = "./tests/e2e", port = DEFAULT_PORT, server = "node ./bin/server.js", build = "npm run build", prepare = "", signIn = "", env = {}, health = "/api/health", globalTimeout = GLOBAL_TIMEOUT_MS, environment = process.env, cwd = process.cwd() } = {})`
|
|
49
|
+
- `browserTestWorkers({ env = process.env, argv = process.argv } = {})`
|
|
50
|
+
Local functions
|
|
51
|
+
- `positiveInteger(value)`
|
|
52
|
+
- `managedBaseUrl(env)`
|
|
53
|
+
- `commandLineWorkers(argv)`
|
|
54
|
+
- `preparedWorkerEnvironment(file, index)`
|
|
55
|
+
|
|
17
56
|
### `scripts/build-catalog.mjs`
|
|
18
57
|
Exports
|
|
19
58
|
- None
|
|
@@ -74,12 +113,20 @@ Local functions
|
|
|
74
113
|
|
|
75
114
|
### `scripts/material3-source.mjs`
|
|
76
115
|
Exports
|
|
116
|
+
- `DEFAULT_IMPORT`
|
|
117
|
+
- `TEMPLATE_TAG`
|
|
118
|
+
- `VOID_TAGS`
|
|
77
119
|
- `HEX_COLOUR`
|
|
120
|
+
- `balancedFrom(text, start, open = "{", close = "}")`
|
|
78
121
|
- `blankCssComments(source)`
|
|
79
122
|
- `blankHtmlComments(source)`
|
|
80
123
|
- `blankJsComments(source)`
|
|
124
|
+
- `enclosingObject(text, offset)`
|
|
125
|
+
- `exclusiveBranches(left, right)`
|
|
81
126
|
- `kebab(name)`
|
|
82
127
|
- `lineIndex(text)`
|
|
128
|
+
- `localComponent(file, specifier, known)`
|
|
129
|
+
- `readConditionalBranches(template)`
|
|
83
130
|
- `readDeclarations(css, offset)`
|
|
84
131
|
- `readExceptions(source)`
|
|
85
132
|
- `readInlineDeclarations(text, offset)`
|
|
@@ -99,11 +146,13 @@ Exports
|
|
|
99
146
|
- `formatNavigationReport(result)`
|
|
100
147
|
Local functions
|
|
101
148
|
- `hexPattern()`
|
|
149
|
+
- `channelColour()`
|
|
102
150
|
- `quotedHex()`
|
|
103
151
|
- `isNavigationRule(rule)`
|
|
104
152
|
- `isSkippedDirectory(name)`
|
|
105
153
|
- `isSourceFile(relativePath)`
|
|
106
|
-
- `
|
|
154
|
+
- `isFrameworkPackage(projectRoot, directory)`
|
|
155
|
+
- `walk(projectRoot, directory, files, wholeApp = false)`
|
|
107
156
|
- `collectFiles(projectRoot, paths)`
|
|
108
157
|
- `createReporter(file, source, { navigationOnly = false } = {})`
|
|
109
158
|
- `checkCode(code, offset, { report, themed })`
|
|
@@ -141,10 +190,8 @@ Local functions
|
|
|
141
190
|
- `navigatesFromControl(tag, script)`
|
|
142
191
|
- `attribute(tag, name)`
|
|
143
192
|
- `visibleText(inner)`
|
|
144
|
-
- `
|
|
193
|
+
- `isBackComponentName(name)`
|
|
145
194
|
- `looksLikeBack(tag)`
|
|
146
|
-
- `balancedFrom(text, start, open = "{", close = "}")`
|
|
147
|
-
- `enclosingObject(text, offset)`
|
|
148
195
|
- `stringValue(text, key)`
|
|
149
196
|
- `readMainNavigation(sources)`
|
|
150
197
|
- `computedPlacementPart(placement)`
|
|
@@ -156,9 +203,19 @@ Local functions
|
|
|
156
203
|
- `routeDeclarations(source)`
|
|
157
204
|
- `readPage(file, source)`
|
|
158
205
|
- `createShellBarReader(appFiles, read, tag = SHELL_UP_TAG)`
|
|
159
|
-
- `
|
|
206
|
+
- `shellPlacement(file, source, drawsShellBar, known, barTag = SHELL_UP_TAG)`
|
|
207
|
+
- `rendersOutsideLayouts(code, name)`
|
|
208
|
+
- `judgePackageRoute(route, { surfaces, appShell, drawsShellBar, isDestination, isAddress, readable, report })`
|
|
160
209
|
- `pageKey(file)`
|
|
161
210
|
|
|
211
|
+
### `scripts/package-routes.mjs`
|
|
212
|
+
Exports
|
|
213
|
+
- `readPackageRoutes(root, known)`
|
|
214
|
+
Local functions
|
|
215
|
+
- `isRecord(value)`
|
|
216
|
+
- `clientEntryOf(manifest, directory)`
|
|
217
|
+
- `readRouteComponents(entry, code, known)`
|
|
218
|
+
|
|
162
219
|
### `scripts/pattern-assets.mjs`
|
|
163
220
|
Exports
|
|
164
221
|
- `PATTERN_DOCUMENT_NAME`
|
|
@@ -218,6 +275,65 @@ Local functions
|
|
|
218
275
|
- `alignLockManifestRecord(lockRecord, manifest, localPackageNames)`
|
|
219
276
|
- `preparePackageLockForInstall(projectRoot, manifests, packageLockPath)`
|
|
220
277
|
|
|
278
|
+
### `scripts/test-budget.mjs`
|
|
279
|
+
Exports
|
|
280
|
+
- `BUDGET_VARIABLE`
|
|
281
|
+
- `testConcurrency({ env = process.env, parallelism = os.availableParallelism() } = {})`
|
|
282
|
+
|
|
283
|
+
### `scripts/test-command.mjs`
|
|
284
|
+
Exports
|
|
285
|
+
- `planTestRuns(args, { cwd = process.cwd(), concurrency = testConcurrency() } = {})`
|
|
286
|
+
- `runTests(args)`
|
|
287
|
+
- `withTimeReporter(run, destination)`
|
|
288
|
+
Local functions
|
|
289
|
+
- `findTestFiles(patterns, cwd)`
|
|
290
|
+
- `readAloneFiles(files, cwd)`
|
|
291
|
+
- `aloneDestination(destination)`
|
|
292
|
+
- `aloneRunOptions(options)`
|
|
293
|
+
- `aloneShard(files, options)`
|
|
294
|
+
- `runNode(args, env)`
|
|
295
|
+
|
|
296
|
+
### `scripts/test-databases.mjs`
|
|
297
|
+
Exports
|
|
298
|
+
- `DATABASES_OPTION`
|
|
299
|
+
- `testDatabaseRunFor(count, cwd = process.cwd())`
|
|
300
|
+
Local functions
|
|
301
|
+
- `withOwnEnvironment(load)`
|
|
302
|
+
|
|
303
|
+
### `scripts/test-file-stop.mjs`
|
|
304
|
+
Exports
|
|
305
|
+
- `STOPPED_PREFIX`
|
|
306
|
+
- `STOPS_VARIABLE`
|
|
307
|
+
|
|
308
|
+
### `scripts/test-runs.mjs`
|
|
309
|
+
Exports
|
|
310
|
+
- `checkTestRuns({ projectRoot, manifests })`
|
|
311
|
+
- `formatTestRunsReport(result)`
|
|
312
|
+
Local functions
|
|
313
|
+
- `commandsOf(script)`
|
|
314
|
+
- `isProgram(token, name)`
|
|
315
|
+
- `runsNodeTest(tokens)`
|
|
316
|
+
- `runnerArguments(tokens, runner)`
|
|
317
|
+
- `configOption(args)`
|
|
318
|
+
- `lineOf(contents, needle, after = "")`
|
|
319
|
+
- `findConfig(directory, explicit, names)`
|
|
320
|
+
- `usesBrowserHarness(source)`
|
|
321
|
+
- `developmentServerCommand(source)`
|
|
322
|
+
- `checkPlaywrightIsolation({ file, source, report })`
|
|
323
|
+
- `checkRunnerConfig({ root, configPath, directory, runner, report })`
|
|
324
|
+
|
|
325
|
+
### `scripts/test-time-report.mjs`
|
|
326
|
+
Exports
|
|
327
|
+
- `BOUNDS_FILE`
|
|
328
|
+
- `FILE_TIMES`
|
|
329
|
+
- `checkTestTimes({ bounds, files, tests, wallMs, stopped = [] })`
|
|
330
|
+
- `fileStop({ bound, recorded })`
|
|
331
|
+
- `reportTestTimes({ cwd, collected, directory, wallMs })`
|
|
332
|
+
- `writeFileStops({ cwd, files, directory })`
|
|
333
|
+
Local functions
|
|
334
|
+
- `seconds(ms)`
|
|
335
|
+
- `readTestTimeBounds(cwd)`
|
|
336
|
+
|
|
221
337
|
### `scripts/verify-packages.mjs`
|
|
222
338
|
Exports
|
|
223
339
|
- `main()`
|
|
@@ -234,3 +350,4 @@ Local functions
|
|
|
234
350
|
- `validateMigrationsAfter(packageJson)`
|
|
235
351
|
- `validateMigrationDirectory(packageName, absoluteDirectory, relativeDirectory, migrationOwners)`
|
|
236
352
|
- `validatePackage(packageRecord, localVersions, migrationOwners)`
|
|
353
|
+
- `verifyTestRuns()`
|
|
@@ -14,13 +14,22 @@ Use this on demand; do not load the full index at startup.
|
|
|
14
14
|
|
|
15
15
|
### root
|
|
16
16
|
|
|
17
|
+
### `browserExpect.mjs`
|
|
18
|
+
Exports
|
|
19
|
+
- `expect`
|
|
20
|
+
|
|
17
21
|
### `browserFixture.mjs`
|
|
18
22
|
Exports
|
|
19
23
|
- `createChromiumLaunchOptions({ env = process.env } = {})`
|
|
20
24
|
- `reservePort()`
|
|
25
|
+
- `sharedBrowserFixture(viteOptions)`
|
|
21
26
|
- `startCapturedProcess(command, args, { cwd, env = {} } = {})`
|
|
22
|
-
- `startViteFixture({ fixtureRoot, configFile = "vite.config.mjs", env = {}, port: requestedPort } = {})`
|
|
27
|
+
- `startViteFixture({ fixtureRoot, configFile = "vite.config.mjs", env = {}, port: requestedPort, cacheDir: requestedCacheDir } = {})`
|
|
23
28
|
- `stopProcess(runtime)`
|
|
29
|
+
Local functions
|
|
30
|
+
- `stopChild(child)`
|
|
31
|
+
- `takeCacheDir(configPath)`
|
|
32
|
+
- `returnCacheDir(configPath, cacheDir)`
|
|
24
33
|
|
|
25
34
|
### `fakeFastify.mjs`
|
|
26
35
|
Exports
|
|
@@ -34,3 +43,8 @@ Exports
|
|
|
34
43
|
- `readMaterialStyles(page, probes)`
|
|
35
44
|
Local functions
|
|
36
45
|
- `comparePixels(page, actual, expected)`
|
|
46
|
+
- `waitForStillPage(page)`
|
|
47
|
+
|
|
48
|
+
### `viteFixtureServer.mjs`
|
|
49
|
+
Exports
|
|
50
|
+
- None
|
package/skills/jskit/SKILL.md
CHANGED
|
@@ -58,6 +58,8 @@ manifests, migrations, tests, and runtime behaviour are the evidence.
|
|
|
58
58
|
also read [Material 3](references/material-3.md) completely before acting.
|
|
59
59
|
- For a UI pass (the changes, a section, or the whole app), also read
|
|
60
60
|
[UI pass](references/ui-pass.md) completely.
|
|
61
|
+
- Before writing a list, save, batch or test, a refactor, or calling work
|
|
62
|
+
done, read [sanity checks](references/sanity-checks.md).
|
|
61
63
|
|
|
62
64
|
These are complete operational references required by this skill. Do not load
|
|
63
65
|
irrelevant references or other docs.
|
|
@@ -122,8 +124,18 @@ whole changeset. Use the current-state owners in application operations and
|
|
|
122
124
|
Playwright for affected UI. There is no current JSKIT Doctor command; ignore
|
|
123
125
|
old CLI authoring-history diagnoses. Never expose environment values.
|
|
124
126
|
|
|
125
|
-
Tests and requests take the time their work needs, no more: a list
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
Tests and requests take the time their work needs, no more: count a list's or
|
|
128
|
+
save's queries at a few rows and at a realistic number and
|
|
129
|
+
judge whether they grow with the rows, and read the suite's time and its
|
|
130
|
+
slowest files. Find why a check is slow; never raise its time limit. Typed
|
|
131
|
+
features' repository and Tests rules say how.
|
|
132
|
+
|
|
133
|
+
Test files run in parallel by default, bounded by the machine: a script runs
|
|
134
|
+
`jskit test` (`--databases`: a `TEST_DB_NAME` copy per file), never
|
|
135
|
+
`node --test` or a fixed `--test-concurrency`; Playwright's config is
|
|
136
|
+
`browserTestConfig()` from `@jskit-ai/jskit-catalog/browser-tests` and Vitest's
|
|
137
|
+
`maxWorkers` is `testConcurrency()` from `@jskit-ai/jskit-catalog/test-budget`.
|
|
138
|
+
Plain `jskit check` fails anything else. Files that collide when run together
|
|
139
|
+
get isolated (their own port, temporary directory and database), never
|
|
140
|
+
serialised. A file that truly must run alone says why on its first line,
|
|
141
|
+
`// jskit-test: alone - <reason>`.
|