@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefieldstools.eslint-plugin-no-implicit-sensitivefields
ESLint rule enforcing that every defineReferenceKind() call declares an explicit sensitiveFields array (closes F-4).
@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefieldsSource, release and verification context
Source snapshot bcc79fcc · Declared package version 2.0.4. This page combines the checked-in package guide and manifest; commands and runtime behavior were not executed in this review.
See where this package fits.
Follow a declared connection, inspect an import, then open the source guide when you need the detail.
Arrows point from a package to its direct dependency. Each count is derived from the captured manifests.
No Runtime dependencies are declared here.
@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields
ESLint plugin that enforces explicit sensitiveFields declarations on every defineReferenceKind() call from @lssm-tech/lib.contracts-spec/rich-reference.
Closes plan slice S-1b (architect NR-2 / F-4 mitigation): the contracts-spec runtime already throws when sensitiveFields is missing or non-array, but the runtime cannot enforce the additional repository policy that an empty array (sensitiveFields: []) must be accompanied by an inline confirmation comment. This rule catches both issues at lint time.
Install
bun add -d @lssm-tech/tools.eslint-plugin-no-implicit-sensitivefieldseslint (>=8, <11) is a peer dependency.
Flat config (ESLint 9+)
import noImplicitSensitiveFields from '@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields';
export default [
{
plugins: { 'no-implicit-sensitivefields': noImplicitSensitiveFields },
rules: { 'no-implicit-sensitivefields/no-implicit-sensitivefields': 'error' },
},
];Or apply the bundled recommended flat config in one line:
import { configs } from '@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields';
export default [configs.recommended];What the rule does
For every call expression whose callee is defineReferenceKind (or <obj>.defineReferenceKind):
- If the object literal argument lacks a
sensitiveFieldsproperty → reportsmissing. - If
sensitiveFields: []appears without a nearby comment containingconfirmed: no sensitive fields→ reportsemptyWithoutComment.
A "nearby" comment is one whose line number is within ±1 line of the sensitiveFields property — covering the common authoring shapes: a leading comment, a same-line trailing comment, or an in-block comment immediately after.
Valid
defineReferenceKind({
id: 'ticket',
schema,
sensitiveFields: ['title'],
defaultPreview: 'inline-card',
defaultPanel: 'drawer',
icon: 'ticket',
});
defineReferenceKind({
id: 'public-doc',
schema,
// confirmed: no sensitive fields
sensitiveFields: [],
defaultPreview: 'inline-card',
defaultPanel: 'drawer',
icon: 'doc',
});
defineReferenceKind({
id: 'public-doc-2',
schema,
sensitiveFields: [], // confirmed: no sensitive fields
defaultPreview: 'inline-card',
defaultPanel: 'drawer',
icon: 'doc',
});Invalid
// Missing sensitiveFields entirely
defineReferenceKind({
id: 'bad-1',
schema,
defaultPreview: 'inline-card',
defaultPanel: 'drawer',
icon: 'bad',
}); // error: missing
// Empty list without the confirmation marker
defineReferenceKind({
id: 'bad-2',
schema,
sensitiveFields: [],
defaultPreview: 'inline-card',
defaultPanel: 'drawer',
icon: 'bad',
}); // error: emptyWithoutCommentTest
bun testDeclared capabilities.
This manifest does not declare a capability catalogue. Use the guide, import map and source to assess the package.
Imports and export paths.
2 entriesThese are package-manifest entry points. Named symbols listed above come from the capability catalogue; this is not an exhaustive TypeScript symbol reference.
2 imports
@lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields/ruleNo export paths match this search.
Dependencies and related packages.
Peer dependencies 1
- eslint
- >=10.10.0
Development dependencies 5
- @lssm-tech/tool.bun
- workspace:*
- @lssm-tech/tool.typescript
- workspace:*
- @types/estree
- ^1.0.9
- eslint
- ^10.10.0
- typescript
- catalog:
Package scripts.
Commands declared by this package. Review its setup requirements before running them; no command here was executed by this review.
contractspec-bun-build buildcontractspec-bun-build transpilecontractspec-bun-build typesrimraf dist .turbobun run lint:fixnode ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .node ../../../scripts/biome.cjs check .bun testtsgo --noEmitcontractspec-bun-build prebuild