@memberjunction/react-test-harness 5.37.0 → 5.38.0
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/README.md +30 -0
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/browser-context.d.ts +43 -0
- package/dist/lib/browser-context.d.ts.map +1 -1
- package/dist/lib/browser-context.js +87 -12
- package/dist/lib/browser-context.js.map +1 -1
- package/dist/lib/component-runner.d.ts +11 -22
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +1 -1
- package/dist/lib/component-runner.js.map +1 -1
- package/dist/lib/linter-test-tool.js +1 -1
- package/dist/lib/linter-test-tool.js.map +1 -1
- package/dist/lib/test-harness.d.ts +10 -0
- package/dist/lib/test-harness.d.ts.map +1 -1
- package/dist/lib/test-harness.js +10 -0
- package/dist/lib/test-harness.js.map +1 -1
- package/package.json +14 -13
- package/dist/lib/component-linter.d.ts +0 -77
- package/dist/lib/component-linter.d.ts.map +0 -1
- package/dist/lib/component-linter.js +0 -1205
- package/dist/lib/component-linter.js.map +0 -1
- package/dist/lib/control-flow-analyzer.d.ts +0 -184
- package/dist/lib/control-flow-analyzer.d.ts.map +0 -1
- package/dist/lib/control-flow-analyzer.js +0 -798
- package/dist/lib/control-flow-analyzer.js.map +0 -1
- package/dist/lib/library-lint-cache.d.ts +0 -50
- package/dist/lib/library-lint-cache.d.ts.map +0 -1
- package/dist/lib/library-lint-cache.js +0 -173
- package/dist/lib/library-lint-cache.js.map +0 -1
- package/dist/lib/lint-rule.d.ts +0 -70
- package/dist/lib/lint-rule.d.ts.map +0 -1
- package/dist/lib/lint-rule.js +0 -41
- package/dist/lib/lint-rule.js.map +0 -1
- package/dist/lib/lint-utils.d.ts +0 -131
- package/dist/lib/lint-utils.d.ts.map +0 -1
- package/dist/lib/lint-utils.js +0 -358
- package/dist/lib/lint-utils.js.map +0 -1
- package/dist/lib/prop-value-extractor.d.ts +0 -147
- package/dist/lib/prop-value-extractor.d.ts.map +0 -1
- package/dist/lib/prop-value-extractor.js +0 -472
- package/dist/lib/prop-value-extractor.js.map +0 -1
- package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts +0 -9
- package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts.map +0 -1
- package/dist/lib/runtime-rules/ai-tools-availability-check.js +0 -223
- package/dist/lib/runtime-rules/ai-tools-availability-check.js.map +0 -1
- package/dist/lib/runtime-rules/callback-event-validation.d.ts +0 -22
- package/dist/lib/runtime-rules/callback-event-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/callback-event-validation.js +0 -561
- package/dist/lib/runtime-rules/callback-event-validation.js.map +0 -1
- package/dist/lib/runtime-rules/chart-field-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/chart-field-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/chart-field-validation.js +0 -270
- package/dist/lib/runtime-rules/chart-field-validation.js.map +0 -1
- package/dist/lib/runtime-rules/child-component-prop-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/child-component-prop-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/child-component-prop-validation.js +0 -443
- package/dist/lib/runtime-rules/child-component-prop-validation.js.map +0 -1
- package/dist/lib/runtime-rules/component-name-mismatch.d.ts +0 -19
- package/dist/lib/runtime-rules/component-name-mismatch.d.ts.map +0 -1
- package/dist/lib/runtime-rules/component-name-mismatch.js +0 -82
- package/dist/lib/runtime-rules/component-name-mismatch.js.map +0 -1
- package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts +0 -20
- package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts.map +0 -1
- package/dist/lib/runtime-rules/component-not-in-dependencies.js +0 -92
- package/dist/lib/runtime-rules/component-not-in-dependencies.js.map +0 -1
- package/dist/lib/runtime-rules/component-props-validation.d.ts +0 -25
- package/dist/lib/runtime-rules/component-props-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/component-props-validation.js +0 -228
- package/dist/lib/runtime-rules/component-props-validation.js.map +0 -1
- package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts +0 -20
- package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts.map +0 -1
- package/dist/lib/runtime-rules/component-usage-without-destructuring.js +0 -124
- package/dist/lib/runtime-rules/component-usage-without-destructuring.js.map +0 -1
- package/dist/lib/runtime-rules/data-result-validation.d.ts +0 -9
- package/dist/lib/runtime-rules/data-result-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/data-result-validation.js +0 -763
- package/dist/lib/runtime-rules/data-result-validation.js.map +0 -1
- package/dist/lib/runtime-rules/datagrid-field-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/datagrid-field-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/datagrid-field-validation.js +0 -249
- package/dist/lib/runtime-rules/datagrid-field-validation.js.map +0 -1
- package/dist/lib/runtime-rules/dependency-shadowing.d.ts +0 -20
- package/dist/lib/runtime-rules/dependency-shadowing.d.ts.map +0 -1
- package/dist/lib/runtime-rules/dependency-shadowing.js +0 -147
- package/dist/lib/runtime-rules/dependency-shadowing.js.map +0 -1
- package/dist/lib/runtime-rules/entity-field-access-validation.d.ts +0 -12
- package/dist/lib/runtime-rules/entity-field-access-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/entity-field-access-validation.js +0 -304
- package/dist/lib/runtime-rules/entity-field-access-validation.js.map +0 -1
- package/dist/lib/runtime-rules/event-parameter-validation.d.ts +0 -22
- package/dist/lib/runtime-rules/event-parameter-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/event-parameter-validation.js +0 -406
- package/dist/lib/runtime-rules/event-parameter-validation.js.map +0 -1
- package/dist/lib/runtime-rules/index.d.ts +0 -61
- package/dist/lib/runtime-rules/index.d.ts.map +0 -1
- package/dist/lib/runtime-rules/index.js +0 -62
- package/dist/lib/runtime-rules/index.js.map +0 -1
- package/dist/lib/runtime-rules/library-variable-names.d.ts +0 -24
- package/dist/lib/runtime-rules/library-variable-names.d.ts.map +0 -1
- package/dist/lib/runtime-rules/library-variable-names.js +0 -88
- package/dist/lib/runtime-rules/library-variable-names.js.map +0 -1
- package/dist/lib/runtime-rules/no-child-implementation.d.ts +0 -18
- package/dist/lib/runtime-rules/no-child-implementation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-child-implementation.js +0 -57
- package/dist/lib/runtime-rules/no-child-implementation.js.map +0 -1
- package/dist/lib/runtime-rules/no-data-prop.d.ts +0 -22
- package/dist/lib/runtime-rules/no-data-prop.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-data-prop.js +0 -111
- package/dist/lib/runtime-rules/no-data-prop.js.map +0 -1
- package/dist/lib/runtime-rules/no-export-statements.d.ts +0 -18
- package/dist/lib/runtime-rules/no-export-statements.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-export-statements.js +0 -143
- package/dist/lib/runtime-rules/no-export-statements.js.map +0 -1
- package/dist/lib/runtime-rules/no-iife-wrapper.d.ts +0 -18
- package/dist/lib/runtime-rules/no-iife-wrapper.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-iife-wrapper.js +0 -217
- package/dist/lib/runtime-rules/no-iife-wrapper.js.map +0 -1
- package/dist/lib/runtime-rules/no-import-statements.d.ts +0 -18
- package/dist/lib/runtime-rules/no-import-statements.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-import-statements.js +0 -65
- package/dist/lib/runtime-rules/no-import-statements.js.map +0 -1
- package/dist/lib/runtime-rules/no-react-destructuring.d.ts +0 -18
- package/dist/lib/runtime-rules/no-react-destructuring.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-react-destructuring.js +0 -60
- package/dist/lib/runtime-rules/no-react-destructuring.js.map +0 -1
- package/dist/lib/runtime-rules/no-require-statements.d.ts +0 -18
- package/dist/lib/runtime-rules/no-require-statements.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-require-statements.js +0 -109
- package/dist/lib/runtime-rules/no-require-statements.js.map +0 -1
- package/dist/lib/runtime-rules/no-return-component.d.ts +0 -18
- package/dist/lib/runtime-rules/no-return-component.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-return-component.js +0 -106
- package/dist/lib/runtime-rules/no-return-component.js.map +0 -1
- package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts +0 -20
- package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-unwrap-utility-libs.js +0 -75
- package/dist/lib/runtime-rules/no-unwrap-utility-libs.js.map +0 -1
- package/dist/lib/runtime-rules/no-use-reducer.d.ts +0 -19
- package/dist/lib/runtime-rules/no-use-reducer.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-use-reducer.js +0 -78
- package/dist/lib/runtime-rules/no-use-reducer.js.map +0 -1
- package/dist/lib/runtime-rules/no-window-access.d.ts +0 -23
- package/dist/lib/runtime-rules/no-window-access.d.ts.map +0 -1
- package/dist/lib/runtime-rules/no-window-access.js +0 -136
- package/dist/lib/runtime-rules/no-window-access.js.map +0 -1
- package/dist/lib/runtime-rules/noisy-settings-updates.d.ts +0 -18
- package/dist/lib/runtime-rules/noisy-settings-updates.d.ts.map +0 -1
- package/dist/lib/runtime-rules/noisy-settings-updates.js +0 -110
- package/dist/lib/runtime-rules/noisy-settings-updates.js.map +0 -1
- package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts +0 -30
- package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts.map +0 -1
- package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js +0 -220
- package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js.map +0 -1
- package/dist/lib/runtime-rules/pass-standard-props.d.ts +0 -19
- package/dist/lib/runtime-rules/pass-standard-props.d.ts.map +0 -1
- package/dist/lib/runtime-rules/pass-standard-props.js +0 -82
- package/dist/lib/runtime-rules/pass-standard-props.js.map +0 -1
- package/dist/lib/runtime-rules/prefer-async-await.d.ts +0 -17
- package/dist/lib/runtime-rules/prefer-async-await.d.ts.map +0 -1
- package/dist/lib/runtime-rules/prefer-async-await.js +0 -52
- package/dist/lib/runtime-rules/prefer-async-await.js.map +0 -1
- package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts +0 -17
- package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts.map +0 -1
- package/dist/lib/runtime-rules/prefer-jsx-syntax.js +0 -51
- package/dist/lib/runtime-rules/prefer-jsx-syntax.js.map +0 -1
- package/dist/lib/runtime-rules/prop-state-sync.d.ts +0 -19
- package/dist/lib/runtime-rules/prop-state-sync.d.ts.map +0 -1
- package/dist/lib/runtime-rules/prop-state-sync.js +0 -76
- package/dist/lib/runtime-rules/prop-state-sync.js.map +0 -1
- package/dist/lib/runtime-rules/property-name-consistency.d.ts +0 -20
- package/dist/lib/runtime-rules/property-name-consistency.d.ts.map +0 -1
- package/dist/lib/runtime-rules/property-name-consistency.js +0 -172
- package/dist/lib/runtime-rules/property-name-consistency.js.map +0 -1
- package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/query-result-field-access-validation.js +0 -304
- package/dist/lib/runtime-rules/query-result-field-access-validation.js.map +0 -1
- package/dist/lib/runtime-rules/react-component-naming.d.ts +0 -19
- package/dist/lib/runtime-rules/react-component-naming.d.ts.map +0 -1
- package/dist/lib/runtime-rules/react-component-naming.js +0 -72
- package/dist/lib/runtime-rules/react-component-naming.js.map +0 -1
- package/dist/lib/runtime-rules/react-hooks-rules.d.ts +0 -27
- package/dist/lib/runtime-rules/react-hooks-rules.d.ts.map +0 -1
- package/dist/lib/runtime-rules/react-hooks-rules.js +0 -223
- package/dist/lib/runtime-rules/react-hooks-rules.js.map +0 -1
- package/dist/lib/runtime-rules/required-queries-not-called.d.ts +0 -19
- package/dist/lib/runtime-rules/required-queries-not-called.d.ts.map +0 -1
- package/dist/lib/runtime-rules/required-queries-not-called.js +0 -146
- package/dist/lib/runtime-rules/required-queries-not-called.js.map +0 -1
- package/dist/lib/runtime-rules/runquery-call-validation.d.ts +0 -11
- package/dist/lib/runtime-rules/runquery-call-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/runquery-call-validation.js +0 -886
- package/dist/lib/runtime-rules/runquery-call-validation.js.map +0 -1
- package/dist/lib/runtime-rules/runview-call-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/runview-call-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/runview-call-validation.js +0 -336
- package/dist/lib/runtime-rules/runview-call-validation.js.map +0 -1
- package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts +0 -19
- package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts.map +0 -1
- package/dist/lib/runtime-rules/saved-user-settings-pattern.js +0 -90
- package/dist/lib/runtime-rules/saved-user-settings-pattern.js.map +0 -1
- package/dist/lib/runtime-rules/search-availability-check.d.ts +0 -9
- package/dist/lib/runtime-rules/search-availability-check.d.ts.map +0 -1
- package/dist/lib/runtime-rules/search-availability-check.js +0 -220
- package/dist/lib/runtime-rules/search-availability-check.js.map +0 -1
- package/dist/lib/runtime-rules/search-call-validation.d.ts +0 -9
- package/dist/lib/runtime-rules/search-call-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/search-call-validation.js +0 -336
- package/dist/lib/runtime-rules/search-call-validation.js.map +0 -1
- package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts +0 -18
- package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/server-reload-on-client-operation.js +0 -107
- package/dist/lib/runtime-rules/server-reload-on-client-operation.js.map +0 -1
- package/dist/lib/runtime-rules/single-function-only.d.ts +0 -18
- package/dist/lib/runtime-rules/single-function-only.d.ts.map +0 -1
- package/dist/lib/runtime-rules/single-function-only.js +0 -103
- package/dist/lib/runtime-rules/single-function-only.js.map +0 -1
- package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts +0 -19
- package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts.map +0 -1
- package/dist/lib/runtime-rules/string-replace-all-occurrences.js +0 -109
- package/dist/lib/runtime-rules/string-replace-all-occurrences.js.map +0 -1
- package/dist/lib/runtime-rules/string-template-validation.d.ts +0 -22
- package/dist/lib/runtime-rules/string-template-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/string-template-validation.js +0 -163
- package/dist/lib/runtime-rules/string-template-validation.js.map +0 -1
- package/dist/lib/runtime-rules/styles-validation.d.ts +0 -10
- package/dist/lib/runtime-rules/styles-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/styles-validation.js +0 -153
- package/dist/lib/runtime-rules/styles-validation.js.map +0 -1
- package/dist/lib/runtime-rules/type-inference-errors.d.ts +0 -23
- package/dist/lib/runtime-rules/type-inference-errors.d.ts.map +0 -1
- package/dist/lib/runtime-rules/type-inference-errors.js +0 -53
- package/dist/lib/runtime-rules/type-inference-errors.js.map +0 -1
- package/dist/lib/runtime-rules/type-mismatch-operation.d.ts +0 -23
- package/dist/lib/runtime-rules/type-mismatch-operation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/type-mismatch-operation.js +0 -141
- package/dist/lib/runtime-rules/type-mismatch-operation.js.map +0 -1
- package/dist/lib/runtime-rules/undefined-component-usage.d.ts +0 -20
- package/dist/lib/runtime-rules/undefined-component-usage.d.ts.map +0 -1
- package/dist/lib/runtime-rules/undefined-component-usage.js +0 -138
- package/dist/lib/runtime-rules/undefined-component-usage.js.map +0 -1
- package/dist/lib/runtime-rules/undefined-jsx-component.d.ts +0 -25
- package/dist/lib/runtime-rules/undefined-jsx-component.d.ts.map +0 -1
- package/dist/lib/runtime-rules/undefined-jsx-component.js +0 -269
- package/dist/lib/runtime-rules/undefined-jsx-component.js.map +0 -1
- package/dist/lib/runtime-rules/unsafe-array-operations.d.ts +0 -25
- package/dist/lib/runtime-rules/unsafe-array-operations.d.ts.map +0 -1
- package/dist/lib/runtime-rules/unsafe-array-operations.js +0 -347
- package/dist/lib/runtime-rules/unsafe-array-operations.js.map +0 -1
- package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts +0 -24
- package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts.map +0 -1
- package/dist/lib/runtime-rules/unsafe-formatting-methods.js +0 -277
- package/dist/lib/runtime-rules/unsafe-formatting-methods.js.map +0 -1
- package/dist/lib/runtime-rules/unused-component-dependencies.d.ts +0 -19
- package/dist/lib/runtime-rules/unused-component-dependencies.d.ts.map +0 -1
- package/dist/lib/runtime-rules/unused-component-dependencies.js +0 -90
- package/dist/lib/runtime-rules/unused-component-dependencies.js.map +0 -1
- package/dist/lib/runtime-rules/unused-libraries.d.ts +0 -19
- package/dist/lib/runtime-rules/unused-libraries.d.ts.map +0 -1
- package/dist/lib/runtime-rules/unused-libraries.js +0 -127
- package/dist/lib/runtime-rules/unused-libraries.js.map +0 -1
- package/dist/lib/runtime-rules/use-function-declaration.d.ts +0 -18
- package/dist/lib/runtime-rules/use-function-declaration.d.ts.map +0 -1
- package/dist/lib/runtime-rules/use-function-declaration.js +0 -127
- package/dist/lib/runtime-rules/use-function-declaration.js.map +0 -1
- package/dist/lib/runtime-rules/use-unwrap-components.d.ts +0 -19
- package/dist/lib/runtime-rules/use-unwrap-components.d.ts.map +0 -1
- package/dist/lib/runtime-rules/use-unwrap-components.js +0 -84
- package/dist/lib/runtime-rules/use-unwrap-components.js.map +0 -1
- package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts +0 -23
- package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts.map +0 -1
- package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js +0 -215
- package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js.map +0 -1
- package/dist/lib/runtime-rules/utilities-api-validation.d.ts +0 -24
- package/dist/lib/runtime-rules/utilities-api-validation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/utilities-api-validation.js +0 -121
- package/dist/lib/runtime-rules/utilities-api-validation.js.map +0 -1
- package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts +0 -20
- package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts.map +0 -1
- package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js +0 -58
- package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js.map +0 -1
- package/dist/lib/runtime-rules/validate-component-references.d.ts +0 -19
- package/dist/lib/runtime-rules/validate-component-references.d.ts.map +0 -1
- package/dist/lib/runtime-rules/validate-component-references.js +0 -255
- package/dist/lib/runtime-rules/validate-component-references.js.map +0 -1
- package/dist/lib/schema-validation/component-prop-rule.d.ts +0 -125
- package/dist/lib/schema-validation/component-prop-rule.d.ts.map +0 -1
- package/dist/lib/schema-validation/component-prop-rule.js +0 -624
- package/dist/lib/schema-validation/component-prop-rule.js.map +0 -1
- package/dist/lib/schema-validation/index.d.ts +0 -26
- package/dist/lib/schema-validation/index.d.ts.map +0 -1
- package/dist/lib/schema-validation/index.js +0 -26
- package/dist/lib/schema-validation/index.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/index.d.ts +0 -23
- package/dist/lib/schema-validation/semantic-validators/index.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/index.js +0 -23
- package/dist/lib/schema-validation/semantic-validators/index.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts +0 -43
- package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/required-when-validator.js +0 -94
- package/dist/lib/schema-validation/semantic-validators/required-when-validator.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts +0 -122
- package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js +0 -166
- package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts +0 -260
- package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/semantic-validator.js +0 -301
- package/dist/lib/schema-validation/semantic-validators/semantic-validator.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts +0 -115
- package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js +0 -381
- package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts +0 -60
- package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js +0 -195
- package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts +0 -335
- package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts.map +0 -1
- package/dist/lib/schema-validation/semantic-validators/validation-context.js +0 -13
- package/dist/lib/schema-validation/semantic-validators/validation-context.js.map +0 -1
- package/dist/lib/styles-type-analyzer.d.ts +0 -64
- package/dist/lib/styles-type-analyzer.d.ts.map +0 -1
- package/dist/lib/styles-type-analyzer.js +0 -242
- package/dist/lib/styles-type-analyzer.js.map +0 -1
- package/dist/lib/type-context.d.ts +0 -184
- package/dist/lib/type-context.d.ts.map +0 -1
- package/dist/lib/type-context.js +0 -415
- package/dist/lib/type-context.js.map +0 -1
- package/dist/lib/type-inference-engine.d.ts +0 -181
- package/dist/lib/type-inference-engine.d.ts.map +0 -1
- package/dist/lib/type-inference-engine.js +0 -1151
- package/dist/lib/type-inference-engine.js.map +0 -1
- package/dist/lib/type-rules/type-compatibility-rule.d.ts +0 -79
- package/dist/lib/type-rules/type-compatibility-rule.d.ts.map +0 -1
- package/dist/lib/type-rules/type-compatibility-rule.js +0 -211
- package/dist/lib/type-rules/type-compatibility-rule.js.map +0 -1
package/README.md
CHANGED
|
@@ -38,6 +38,36 @@ console.log('Rendered:', result.success);
|
|
|
38
38
|
console.log('Errors:', result.errors);
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
### Connecting to an existing browser
|
|
42
|
+
|
|
43
|
+
By default the harness launches its own throwaway Chromium. You can instead attach
|
|
44
|
+
to an already-running browser — useful for watching component runs in a browser you
|
|
45
|
+
control, or for reusing a warm/remote browser (pool, Docker) instead of paying a
|
|
46
|
+
cold launch each run.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// Attach to a real Chrome started with --remote-debugging-port=9222 (CDP)
|
|
50
|
+
const harness = new ReactTestHarness({ connect: 'http://localhost:9222' });
|
|
51
|
+
|
|
52
|
+
// Attach to a Playwright server started via chromium.launchServer() (ws endpoint)
|
|
53
|
+
const harness = new ReactTestHarness({ connect: 'ws://localhost:55001/<id>' });
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- **Auto-detect:** `http(s)://` endpoints use CDP (`connectOverCDP`); `ws(s)://`
|
|
57
|
+
endpoints use a Playwright server (`connect`). A raw CDP websocket also starts
|
|
58
|
+
with `ws://` — pass `connectType: 'cdp'` to force CDP in that case.
|
|
59
|
+
- **Env-var fallback:** set `MJ_REACT_TEST_HARNESS_CONNECT` to the endpoint instead
|
|
60
|
+
of passing `connect` (so the `mj-react-test` CLI can attach without a new flag).
|
|
61
|
+
- **Session reuse:** by default a fresh isolated context is created inside the
|
|
62
|
+
attached browser. Set `reuseExistingContext: true` (or
|
|
63
|
+
`MJ_REACT_TEST_HARNESS_REUSE_CONTEXT=true`) to reuse the browser's existing
|
|
64
|
+
default context and share its cookies/auth/session. This breaks per-test
|
|
65
|
+
isolation, so keep the default for parallel runs.
|
|
66
|
+
- **Lifecycle safety:** when attached, `harness.close()` only closes the pages and
|
|
67
|
+
contexts the harness created — it never closes a browser it did not launch, nor a
|
|
68
|
+
reused/shared context. The external browser's lifecycle is the caller's.
|
|
69
|
+
- `headless` is ignored when attaching (the external browser already decided).
|
|
70
|
+
|
|
41
71
|
### Writing Custom Rules
|
|
42
72
|
|
|
43
73
|
Rules extend `BaseLintRule` and auto-register via `@RegisterClass`:
|
package/dist/cli/index.js
CHANGED
|
@@ -8,7 +8,11 @@ import { ReactTestHarness } from '../lib/test-harness.js';
|
|
|
8
8
|
const program = new Command();
|
|
9
9
|
program
|
|
10
10
|
.name('mj-react-test')
|
|
11
|
-
.description('React component test harness for MemberJunction'
|
|
11
|
+
.description('React component test harness for MemberJunction.\n' +
|
|
12
|
+
'To attach to an existing browser instead of launching one, set ' +
|
|
13
|
+
'MJ_REACT_TEST_HARNESS_CONNECT (http(s)://… for CDP, ws(s)://… for a ' +
|
|
14
|
+
'Playwright server); optionally MJ_REACT_TEST_HARNESS_REUSE_CONTEXT=true ' +
|
|
15
|
+
'to reuse its session.')
|
|
12
16
|
.version('2.69.1');
|
|
13
17
|
program
|
|
14
18
|
.command('run <componentFile>')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export { ReactTestHarness, TestHarnessOptions } from './lib/test-harness.js';
|
|
2
|
-
export { BrowserManager, BrowserContextOptions } from './lib/browser-context.js';
|
|
2
|
+
export { BrowserManager, BrowserContextOptions, classifyConnectEndpoint } from './lib/browser-context.js';
|
|
3
3
|
export { ComponentRunner, ComponentExecutionOptions, ComponentExecutionResult } from './lib/component-runner.js';
|
|
4
4
|
export { AssertionHelpers } from './lib/assertion-helpers.js';
|
|
5
|
-
export { ComponentLinter, LintResult, Violation } from './lib/component-linter.js';
|
|
6
|
-
export { BaseLintRule } from './lib/lint-rule.js';
|
|
7
|
-
export { LibraryLintCache, CompiledLibraryRules, CompiledValidator } from './lib/library-lint-cache.js';
|
|
8
|
-
export { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
9
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
export { ReactTestHarness } from './lib/test-harness.js';
|
|
2
|
-
export { BrowserManager } from './lib/browser-context.js';
|
|
2
|
+
export { BrowserManager, classifyConnectEndpoint } from './lib/browser-context.js';
|
|
3
3
|
// Export the component runner that uses the real React runtime UMD bundle
|
|
4
4
|
export { ComponentRunner } from './lib/component-runner.js';
|
|
5
5
|
export { AssertionHelpers } from './lib/assertion-helpers.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
// NOTE: The lint engine API (ComponentLinter, LintResult, Violation, BaseLintRule,
|
|
7
|
+
// LibraryLintCache, CompiledLibraryRules, CompiledValidator, LinterOptions) was
|
|
8
|
+
// previously re-exported here for back-compat after the 5.37 extraction. Those
|
|
9
|
+
// re-exports were removed in 5.38 per the project's no-re-exports-between-packages
|
|
10
|
+
// rule.
|
|
11
|
+
//
|
|
12
|
+
// Import directly from the source packages:
|
|
13
|
+
// import { ComponentLinter, LintResult, Violation } from '@memberjunction/react-linter';
|
|
14
|
+
// import { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAyB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAyB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACvG,0EAA0E;AAC1E,OAAO,EAAE,eAAe,EAAuD,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,mFAAmF;AACnF,gFAAgF;AAChF,+EAA+E;AAC/E,mFAAmF;AACnF,QAAQ;AACR,EAAE;AACF,4CAA4C;AAC5C,2FAA2F;AAC3F,iFAAiF"}
|
|
@@ -9,13 +9,56 @@ export interface BrowserContextOptions {
|
|
|
9
9
|
deviceScaleFactor?: number;
|
|
10
10
|
locale?: string;
|
|
11
11
|
timezoneId?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Attach to an already-running browser instead of launching a new one.
|
|
14
|
+
* The connect method is auto-detected from the endpoint scheme:
|
|
15
|
+
* - `http(s)://…` → Chrome DevTools Protocol (`chromium.connectOverCDP`),
|
|
16
|
+
* e.g. a real Chrome started with `--remote-debugging-port=9222`.
|
|
17
|
+
* - `ws(s)://…` → a Playwright browser server (`chromium.connect`),
|
|
18
|
+
* e.g. one started via `chromium.launchServer()` (local pool / Docker / remote).
|
|
19
|
+
* Falls back to the `MJ_REACT_TEST_HARNESS_CONNECT` env var when unset.
|
|
20
|
+
* When attaching, `headless` is ignored — the external browser already decided.
|
|
21
|
+
*/
|
|
22
|
+
connect?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Disambiguate the connect method. A raw CDP websocket also uses `ws://`, which
|
|
25
|
+
* auto-detect would treat as a Playwright server; set `'cdp'` to force CDP.
|
|
26
|
+
* Defaults to `'auto'` (scheme-based detection).
|
|
27
|
+
*/
|
|
28
|
+
connectType?: 'cdp' | 'server' | 'auto';
|
|
29
|
+
/**
|
|
30
|
+
* When attached, reuse the running browser's existing default context so its
|
|
31
|
+
* cookies / auth / session are shared (the point of attaching to YOUR browser),
|
|
32
|
+
* instead of creating a fresh isolated context. Defaults to false. Falls back to
|
|
33
|
+
* the `MJ_REACT_TEST_HARNESS_REUSE_CONTEXT` env var (`1`/`true`/`yes`).
|
|
34
|
+
*
|
|
35
|
+
* Note: this breaks per-test isolation — parallel harness instances would share
|
|
36
|
+
* one context. Viewport/locale/userAgent options are ignored when reusing a
|
|
37
|
+
* context (they only apply to contexts the harness creates).
|
|
38
|
+
*/
|
|
39
|
+
reuseExistingContext?: boolean;
|
|
12
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Decide whether a connect endpoint refers to a CDP browser or a Playwright server.
|
|
43
|
+
* Pure (no I/O) so it can be unit-tested without launching a browser.
|
|
44
|
+
*
|
|
45
|
+
* @throws if the scheme is unrecognized and no explicit `hint` is given.
|
|
46
|
+
*/
|
|
47
|
+
export declare function classifyConnectEndpoint(endpoint: string, hint?: 'cdp' | 'server' | 'auto'): 'cdp' | 'server';
|
|
13
48
|
export declare class BrowserManager {
|
|
14
49
|
private options;
|
|
15
50
|
private browser;
|
|
16
51
|
private context;
|
|
17
52
|
private page;
|
|
53
|
+
/** True when we attached to an external browser rather than launching one. */
|
|
54
|
+
private connected;
|
|
55
|
+
/** True when WE created the context (so close() is allowed to close it). */
|
|
56
|
+
private ownsContext;
|
|
18
57
|
constructor(options?: BrowserContextOptions);
|
|
58
|
+
/** Options applied when the harness creates its own browser context. */
|
|
59
|
+
private contextOptions;
|
|
60
|
+
/** Resolve whether to reuse the existing context (option → env-var fallback). */
|
|
61
|
+
private shouldReuseExistingContext;
|
|
19
62
|
initialize(): Promise<void>;
|
|
20
63
|
getPage(): Promise<Page>;
|
|
21
64
|
navigateTo(url: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-context.d.ts","sourceRoot":"","sources":["../../src/lib/browser-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-context.d.ts","sourceRoot":"","sources":["../../src/lib/browser-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,IAAI,EAAE,MAAM,YAAY,CAAC;AAMrE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAExC;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAe,GACvC,KAAK,GAAG,QAAQ,CAclB;AAED,qBAAa,cAAc;IASb,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,IAAI,CAAqB;IACjC,8EAA8E;IAC9E,OAAO,CAAC,SAAS,CAAS;IAC1B,4EAA4E;IAC5E,OAAO,CAAC,WAAW,CAAS;gBAER,OAAO,GAAE,qBAA0B;IAQvD,wEAAwE;IACxE,OAAO,CAAC,cAAc;IAUtB,iFAAiF;IACjF,OAAO,CAAC,0BAA0B;IAQ5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAKxE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,gBAAgB,CAAC,KAAK,GAAE,MAAM,GAAG,kBAAkB,GAAG,aAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAInG"}
|
|
@@ -1,30 +1,93 @@
|
|
|
1
1
|
import { chromium } from 'playwright';
|
|
2
|
+
/** Environment-variable fallbacks for attaching to an existing browser. */
|
|
3
|
+
const CONNECT_ENV_VAR = 'MJ_REACT_TEST_HARNESS_CONNECT';
|
|
4
|
+
const REUSE_CONTEXT_ENV_VAR = 'MJ_REACT_TEST_HARNESS_REUSE_CONTEXT';
|
|
5
|
+
/**
|
|
6
|
+
* Decide whether a connect endpoint refers to a CDP browser or a Playwright server.
|
|
7
|
+
* Pure (no I/O) so it can be unit-tested without launching a browser.
|
|
8
|
+
*
|
|
9
|
+
* @throws if the scheme is unrecognized and no explicit `hint` is given.
|
|
10
|
+
*/
|
|
11
|
+
export function classifyConnectEndpoint(endpoint, hint = 'auto') {
|
|
12
|
+
if (hint !== 'auto') {
|
|
13
|
+
return hint;
|
|
14
|
+
}
|
|
15
|
+
if (/^wss?:\/\//i.test(endpoint)) {
|
|
16
|
+
return 'server';
|
|
17
|
+
}
|
|
18
|
+
if (/^https?:\/\//i.test(endpoint)) {
|
|
19
|
+
return 'cdp';
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`Unrecognized connect endpoint "${endpoint}". Use http(s):// for CDP ` +
|
|
22
|
+
`or ws(s):// for a Playwright server, or set connectType explicitly.`);
|
|
23
|
+
}
|
|
2
24
|
export class BrowserManager {
|
|
3
25
|
constructor(options = {}) {
|
|
4
26
|
this.options = options;
|
|
5
27
|
this.browser = null;
|
|
6
28
|
this.context = null;
|
|
7
29
|
this.page = null;
|
|
30
|
+
/** True when we attached to an external browser rather than launching one. */
|
|
31
|
+
this.connected = false;
|
|
32
|
+
/** True when WE created the context (so close() is allowed to close it). */
|
|
33
|
+
this.ownsContext = false;
|
|
8
34
|
this.options = {
|
|
9
35
|
headless: true,
|
|
10
36
|
viewport: { width: 1280, height: 720 },
|
|
11
37
|
...options
|
|
12
38
|
};
|
|
13
39
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
this.browser = await chromium.launch({
|
|
19
|
-
headless: this.options.headless
|
|
20
|
-
});
|
|
21
|
-
this.context = await this.browser.newContext({
|
|
40
|
+
/** Options applied when the harness creates its own browser context. */
|
|
41
|
+
contextOptions() {
|
|
42
|
+
return {
|
|
22
43
|
viewport: this.options.viewport,
|
|
23
44
|
userAgent: this.options.userAgent,
|
|
24
45
|
deviceScaleFactor: this.options.deviceScaleFactor,
|
|
25
46
|
locale: this.options.locale,
|
|
26
47
|
timezoneId: this.options.timezoneId
|
|
27
|
-
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Resolve whether to reuse the existing context (option → env-var fallback). */
|
|
51
|
+
shouldReuseExistingContext() {
|
|
52
|
+
if (this.options.reuseExistingContext !== undefined) {
|
|
53
|
+
return this.options.reuseExistingContext;
|
|
54
|
+
}
|
|
55
|
+
const raw = (process.env[REUSE_CONTEXT_ENV_VAR] ?? '').toLowerCase();
|
|
56
|
+
return raw === '1' || raw === 'true' || raw === 'yes';
|
|
57
|
+
}
|
|
58
|
+
async initialize() {
|
|
59
|
+
if (this.browser) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const endpoint = this.options.connect ?? process.env[CONNECT_ENV_VAR];
|
|
63
|
+
if (endpoint) {
|
|
64
|
+
const method = classifyConnectEndpoint(endpoint, this.options.connectType);
|
|
65
|
+
this.browser = method === 'server'
|
|
66
|
+
? await chromium.connect(endpoint)
|
|
67
|
+
: await chromium.connectOverCDP(endpoint);
|
|
68
|
+
this.connected = true;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.browser = await chromium.launch({ headless: this.options.headless });
|
|
72
|
+
this.connected = false;
|
|
73
|
+
}
|
|
74
|
+
if (this.connected && this.shouldReuseExistingContext()) {
|
|
75
|
+
// CDP connections always expose at least the default context; a freshly
|
|
76
|
+
// started Playwright server has none, so fall back to creating one.
|
|
77
|
+
const existing = this.browser.contexts();
|
|
78
|
+
if (existing.length > 0) {
|
|
79
|
+
this.context = existing[0];
|
|
80
|
+
this.ownsContext = false;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.context = await this.browser.newContext(this.contextOptions());
|
|
84
|
+
this.ownsContext = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.context = await this.browser.newContext(this.contextOptions());
|
|
89
|
+
this.ownsContext = true;
|
|
90
|
+
}
|
|
28
91
|
this.page = await this.context.newPage();
|
|
29
92
|
}
|
|
30
93
|
async getPage() {
|
|
@@ -59,15 +122,27 @@ export class BrowserManager {
|
|
|
59
122
|
}
|
|
60
123
|
async close() {
|
|
61
124
|
if (this.page) {
|
|
62
|
-
|
|
125
|
+
// Always close pages we opened. Swallow errors — the page may already be
|
|
126
|
+
// gone (e.g. the external browser closed it) and that must not mask cleanup.
|
|
127
|
+
await this.page.close().catch(() => { });
|
|
63
128
|
this.page = null;
|
|
64
129
|
}
|
|
65
130
|
if (this.context) {
|
|
66
|
-
|
|
131
|
+
// Only close a context WE created. Never tear down a reused/shared context
|
|
132
|
+
// belonging to the attached browser (it may hold the user's other tabs).
|
|
133
|
+
if (this.ownsContext) {
|
|
134
|
+
await this.context.close().catch(() => { });
|
|
135
|
+
}
|
|
67
136
|
this.context = null;
|
|
68
137
|
}
|
|
69
138
|
if (this.browser) {
|
|
70
|
-
|
|
139
|
+
// Only close browsers WE launched. When attached, leave the external
|
|
140
|
+
// browser/server running — its lifecycle belongs to whoever started it.
|
|
141
|
+
// The Playwright client connection is released on process exit or when
|
|
142
|
+
// the caller drops this harness.
|
|
143
|
+
if (!this.connected) {
|
|
144
|
+
await this.browser.close().catch(() => { });
|
|
145
|
+
}
|
|
71
146
|
this.browser = null;
|
|
72
147
|
}
|
|
73
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-context.js","sourceRoot":"","sources":["../../src/lib/browser-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-context.js","sourceRoot":"","sources":["../../src/lib/browser-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { BrowserManager } from './browser-context.js';
|
|
2
2
|
import type { UserInfo } from '@memberjunction/core';
|
|
3
|
-
import { Violation } from '
|
|
4
|
-
import { ComponentSpec,
|
|
5
|
-
|
|
3
|
+
import { Violation, type LinterOptions } from '@memberjunction/react-linter';
|
|
4
|
+
import { ComponentSpec, SimpleAITools } from '@memberjunction/interactive-component-types';
|
|
5
|
+
/**
|
|
6
|
+
* Browser-execution options for {@link ComponentRunner}. Extends {@link LinterOptions}
|
|
7
|
+
* (which carries `componentSpec`, `contextUser`, `entityMetadata`, `utilities` —
|
|
8
|
+
* the fields the static linter reads) with Playwright-specific runtime fields
|
|
9
|
+
* (timeouts, page-ready hooks, screenshot mode). The browser harness happens
|
|
10
|
+
* to run the linter as a prelude, so accepting a superset keeps the call sites
|
|
11
|
+
* tidy without leaking browser concerns into the linter package.
|
|
12
|
+
*/
|
|
13
|
+
export interface ComponentExecutionOptions extends LinterOptions {
|
|
6
14
|
componentSpec: ComponentSpec;
|
|
7
15
|
props?: Record<string, any>;
|
|
8
16
|
setupCode?: string;
|
|
@@ -14,25 +22,6 @@ export interface ComponentExecutionOptions {
|
|
|
14
22
|
contextUser: UserInfo;
|
|
15
23
|
isRootComponent?: boolean;
|
|
16
24
|
debug?: boolean;
|
|
17
|
-
utilities?: ComponentUtilities;
|
|
18
|
-
/**
|
|
19
|
-
* Optional array of entity metadata providing complete field lists per entity.
|
|
20
|
-
* Used by the linter to validate field usage with two-tier severity:
|
|
21
|
-
* - Medium: Field exists in entity but not declared in dataRequirements
|
|
22
|
-
* - Critical: Field does not exist in entity at all
|
|
23
|
-
*
|
|
24
|
-
* If not provided, linter only checks against dataRequirements.fieldMetadata
|
|
25
|
-
* which may cause false-positive critical errors for valid but undeclared fields.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* // Caller provides metadata for entities used in component
|
|
29
|
-
* const md = new Metadata();
|
|
30
|
-
* const entityNames = spec.dataRequirements.entities.map(e => e.name);
|
|
31
|
-
* const entityMetadata = md.Entities
|
|
32
|
-
* .filter(e => entityNames.includes(e.Name))
|
|
33
|
-
* .map(e => SimpleEntityInfo.FromEntityInfo(e));
|
|
34
|
-
*/
|
|
35
|
-
entityMetadata?: SimpleEntityInfo[];
|
|
36
25
|
/**
|
|
37
26
|
* Optional callback invoked with the live Playwright page after the component
|
|
38
27
|
* has rendered successfully. The page remains open until this callback resolves,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-runner.d.ts","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,KAAK,EAAiC,QAAQ,EAAyD,MAAM,sBAAsB,CAAC;AAC3I,OAAO,EAAmB,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"component-runner.d.ts","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Metadata, RunView, RunQuery, LogError } from '@memberjunction/core';
|
|
|
3
3
|
// ESM compatibility: require is not available in ESM, use createRequire
|
|
4
4
|
// See: https://nodejs.org/api/module.html#modulecreaterequirefilename
|
|
5
5
|
const _require = createRequire(import.meta.url);
|
|
6
|
-
import { ComponentLinter } from '
|
|
6
|
+
import { ComponentLinter } from '@memberjunction/react-linter';
|
|
7
7
|
import { ComponentMetadataEngine } from '@memberjunction/core-entities';
|
|
8
8
|
import { SimpleVectorService } from '@memberjunction/ai-vectors-memory';
|
|
9
9
|
import { AIEngine } from '@memberjunction/aiengine';
|