@venizia/dev-configs 0.4.7-4 → 0.4.7-5

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-settings.js","sourceRoot":"","sources":["../../../src/cli/codemod/model-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import type ts from 'typescript';\n\ntype TTypeScript = typeof ts;\n\n/** The packages that export the `@model` decorator, so an aliased import of it is recognised. */\nconst MODEL_MODULES = new Set<string>(['@venizia/ignis', '@venizia/ignis-kernel']);\n\n/** One thing the codemod could not decide and left alone. */\nexport interface IModelSettingsReport {\n line: number;\n column: number;\n reason: string;\n}\n\nexport interface IModelSettingsResult {\n /** The source after the migration; equal to the input when nothing changed. */\n output: string;\n changed: boolean;\n /** How many `@model` settings objects were rewritten. */\n rewritten: number;\n reports: IModelSettingsReport[];\n}\n\ninterface IEdit {\n start: number;\n end: number;\n text: string;\n}\n\nconst QUERY_KEYS = { defaultFilter: 'filter', defaultLimit: 'default', maxLimit: 'max' } as const;\nconst OLD_KEYS = new Set<string>([...Object.keys(QUERY_KEYS), 'scopeFilter']);\n\n/**\n * Rewrites `@model({ ... })` from the old keys to the grouped ones. `skipMigrate` becomes\n * `migration: { use: false }`. In the `settings` object literal:\n * `defaultFilter` to `query.filter`, `defaultLimit` and `maxLimit` to `query.limit.default` and\n * `query.limit.max`, `scopeFilter` to `access` (`writeGuard` to `write.mode`, `sharedRows` to\n * `write.sharedRows`).\n *\n * It edits by source range, so comments and formatting outside the rewritten properties stay. It\n * never guesses: a `settings` value that is not an object literal, a spread, a computed key, or a\n * `scopeFilter` that is not an object literal is reported and the model is left untouched.\n */\nexport class ModelSettingsCodemod {\n static migrate(opts: {\n typescript: TTypeScript;\n fileName: string;\n source: string;\n }): IModelSettingsResult {\n const { typescript, fileName, source } = opts;\n const sourceFile = typescript.createSourceFile(\n fileName,\n source,\n typescript.ScriptTarget.Latest,\n true,\n );\n const edits: IEdit[] = [];\n const reports: IModelSettingsReport[] = [];\n let rewritten = 0;\n\n const report = (node: ts.Node, reason: string) => {\n const { line, character } = sourceFile.getLineAndCharacterOfPosition(\n node.getStart(sourceFile),\n );\n reports.push({ line: line + 1, column: character + 1, reason });\n };\n\n const nameOf = (property: ts.ObjectLiteralElementLike): string | undefined => {\n if (\n !typescript.isPropertyAssignment(property) &&\n !typescript.isShorthandPropertyAssignment(property)\n ) {\n return undefined;\n }\n\n const { name } = property;\n if (typescript.isIdentifier(name) || typescript.isStringLiteral(name)) {\n return name.text;\n }\n\n return undefined;\n };\n\n const text = (node: ts.Node) => source.slice(node.getStart(sourceFile), node.end);\n\n // Names that mean `@model`: the identifier itself, an alias of a named import from IGNIS, and the\n // namespace of `import * as ignis` (`@ignis.model(...)`).\n const modelNames = new Set<string>(['model']);\n const namespaces = new Set<string>();\n for (const statement of sourceFile.statements) {\n if (\n !typescript.isImportDeclaration(statement) ||\n !typescript.isStringLiteral(statement.moduleSpecifier) ||\n !MODEL_MODULES.has(statement.moduleSpecifier.text)\n ) {\n continue;\n }\n\n const bindings = statement.importClause?.namedBindings;\n if (!bindings) {\n continue;\n }\n\n if (typescript.isNamespaceImport(bindings)) {\n namespaces.add(bindings.name.text);\n continue;\n }\n\n for (const element of bindings.elements) {\n if ((element.propertyName ?? element.name).text === 'model') {\n modelNames.add(element.name.text);\n }\n }\n }\n\n const isModelCallee = (callee: ts.Expression): boolean => {\n if (typescript.isIdentifier(callee)) {\n return modelNames.has(callee.text);\n }\n\n return (\n typescript.isPropertyAccessExpression(callee) &&\n typescript.isIdentifier(callee.expression) &&\n namespaces.has(callee.expression.text) &&\n callee.name.text === 'model'\n );\n };\n\n /**\n * The leading trivia of `first` (its own comments and indentation) followed by the comments that\n * were above the properties being merged into it, so no comment is dropped.\n */\n const composeLeading = (first: ts.Node, merged: ts.Node[]): string => {\n const trivia = source.slice(first.getFullStart(), first.getStart(sourceFile));\n const indent = /[ \\t]*$/.exec(trivia)?.[0] ?? '';\n const extra = merged\n .flatMap((node) => typescript.getLeadingCommentRanges(source, node.getFullStart()) ?? [])\n .map((range) => `${source.slice(range.pos, range.end)}\\n${indent}`)\n .join('');\n\n return trivia + extra;\n };\n\n /**\n * Removes a property with the comma after it; the last property has none, so the comma before it\n * goes instead, leaving no dangling `, }`.\n */\n const removal = (node: ts.Node): IEdit => {\n const after = /^\\s*,/.exec(source.slice(node.end));\n if (after) {\n return { start: node.getFullStart(), end: node.end + after[0].length, text: '' };\n }\n\n const before = /,\\s*$/.exec(source.slice(0, node.getFullStart()));\n const start = before ? node.getFullStart() - before[0].length : node.getFullStart();\n\n return { start, end: node.end, text: '' };\n };\n\n /** Appends members to an object literal: after its last member, or inside empty braces. */\n const append = (object: ts.ObjectLiteralExpression, members: string[]): IEdit => {\n const last = object.properties[object.properties.length - 1];\n if (last) {\n return { start: last.end, end: last.end, text: `, ${members.join(', ')}` };\n }\n\n const at = object.getStart(sourceFile) + 1;\n return { start: at, end: at, text: ` ${members.join(', ')} ` };\n };\n\n const migrateSettings = (settings: ts.ObjectLiteralExpression) => {\n const properties = [...settings.properties];\n const old = new Map<string, ts.PropertyAssignment>();\n let existingQuery: ts.PropertyAssignment | undefined;\n\n for (const property of properties) {\n if (typescript.isSpreadAssignment(property)) {\n // A spread can carry old keys we cannot see.\n report(property, 'settings contains a spread, so its keys are unknown; left untouched');\n return;\n }\n\n if (typescript.isMethodDeclaration(property)) {\n continue;\n }\n\n const name = nameOf(property);\n if (name === undefined) {\n report(property, 'settings contains a computed key; left untouched');\n return;\n }\n\n if (OLD_KEYS.has(name)) {\n if (!typescript.isPropertyAssignment(property)) {\n report(property, `settings.${name} is a shorthand property; left untouched`);\n return;\n }\n old.set(name, property);\n }\n\n if (name === 'query' && typescript.isPropertyAssignment(property)) {\n existingQuery = property;\n }\n }\n\n if (old.size === 0) {\n return;\n }\n\n const queryOld = [...old.keys()].filter((key) => key in QUERY_KEYS);\n const localEdits: IEdit[] = [];\n\n // ---- scopeFilter -> access (rename the key, rewrite writeGuard / sharedRows inside)\n const scopeFilter = old.get('scopeFilter');\n if (scopeFilter) {\n if (!typescript.isObjectLiteralExpression(scopeFilter.initializer)) {\n report(scopeFilter, 'settings.scopeFilter is not an object literal; left untouched');\n return;\n }\n\n const inner = scopeFilter.initializer;\n const guard = inner.properties.find(\n (property) =>\n nameOf(property) === 'writeGuard' && typescript.isPropertyAssignment(property),\n ) as ts.PropertyAssignment | undefined;\n const shared = inner.properties.find(\n (property) =>\n nameOf(property) === 'sharedRows' && typescript.isPropertyAssignment(property),\n ) as ts.PropertyAssignment | undefined;\n const hasSpread = inner.properties.some((property) =>\n typescript.isSpreadAssignment(property),\n );\n\n if (hasSpread) {\n report(scopeFilter, 'settings.scopeFilter contains a spread; left untouched');\n return;\n }\n\n if (inner.properties.some((property) => nameOf(property) === 'write')) {\n report(scopeFilter, 'settings.scopeFilter already has a write key; left untouched');\n return;\n }\n\n localEdits.push({\n start: scopeFilter.name.getStart(sourceFile),\n end: scopeFilter.name.end,\n text: 'access',\n });\n\n if (guard || shared) {\n const members = [\n guard ? `mode: ${text(guard.initializer)}` : undefined,\n shared ? `sharedRows: ${text(shared.initializer)}` : undefined,\n ].filter((member): member is string => member !== undefined);\n const ordered = [guard, shared]\n .filter((property): property is ts.PropertyAssignment => property !== undefined)\n .sort((a, b) => a.getStart(sourceFile) - b.getStart(sourceFile));\n const [first, ...merged] = ordered;\n\n localEdits.push({\n start: first.getFullStart(),\n end: first.end,\n text: `${composeLeading(first, merged)}write: { ${members.join(', ')} }`,\n });\n\n for (const second of merged) {\n localEdits.push(removal(second));\n }\n }\n }\n\n // ---- defaultFilter / defaultLimit / maxLimit -> query\n if (queryOld.length > 0) {\n const filter = old.get('defaultFilter');\n const defaultLimit = old.get('defaultLimit');\n const maxLimit = old.get('maxLimit');\n\n if (existingQuery) {\n if (!typescript.isObjectLiteralExpression(existingQuery.initializer)) {\n report(existingQuery, 'settings.query is not an object literal; left untouched');\n return;\n }\n\n const queryObject = existingQuery.initializer;\n const queryKeys = new Set(queryObject.properties.map((property) => nameOf(property)));\n const existingLimit = queryObject.properties.find(\n (property) => nameOf(property) === 'limit',\n ) as ts.PropertyAssignment | undefined;\n\n if (filter && queryKeys.has('filter')) {\n report(\n filter,\n 'settings.defaultFilter and settings.query.filter are both set; left untouched',\n );\n return;\n }\n\n if ((defaultLimit || maxLimit) && existingLimit) {\n if (!typescript.isObjectLiteralExpression(existingLimit.initializer)) {\n report(\n existingLimit,\n 'settings.query.limit is not an object literal; left untouched',\n );\n return;\n }\n\n const limitKeys = new Set(\n existingLimit.initializer.properties.map((property) => nameOf(property)),\n );\n if ((defaultLimit && limitKeys.has('default')) || (maxLimit && limitKeys.has('max'))) {\n report(\n existingLimit,\n 'an old limit key and its new key are both set; left untouched',\n );\n return;\n }\n }\n\n const additions: string[] = [];\n if (filter) {\n additions.push(`filter: ${text(filter.initializer)}`);\n }\n\n const limitMembers = [\n defaultLimit ? `default: ${text(defaultLimit.initializer)}` : undefined,\n maxLimit ? `max: ${text(maxLimit.initializer)}` : undefined,\n ].filter((member): member is string => member !== undefined);\n\n if (limitMembers.length > 0 && existingLimit) {\n localEdits.push(\n append(existingLimit.initializer as ts.ObjectLiteralExpression, limitMembers),\n );\n } else if (limitMembers.length > 0) {\n additions.push(`limit: { ${limitMembers.join(', ')} }`);\n }\n\n if (additions.length > 0) {\n localEdits.push(append(queryObject, additions));\n }\n\n for (const key of queryOld) {\n const property = old.get(key) as ts.PropertyAssignment;\n localEdits.push(removal(property));\n }\n } else {\n const members: string[] = [];\n if (filter) {\n members.push(`filter: ${text(filter.initializer)}`);\n }\n\n const limitMembers = [\n defaultLimit ? `default: ${text(defaultLimit.initializer)}` : undefined,\n maxLimit ? `max: ${text(maxLimit.initializer)}` : undefined,\n ].filter((member): member is string => member !== undefined);\n if (limitMembers.length > 0) {\n members.push(`limit: { ${limitMembers.join(', ')} }`);\n }\n\n const ordered = queryOld\n .map((key) => old.get(key) as ts.PropertyAssignment)\n .sort((a, b) => a.getStart(sourceFile) - b.getStart(sourceFile));\n const [first, ...others] = ordered;\n\n localEdits.push({\n start: first.getFullStart(),\n end: first.end,\n text: `${composeLeading(first, others)}query: { ${members.join(', ')} }`,\n });\n\n for (const other of others) {\n localEdits.push(removal(other));\n }\n }\n }\n\n edits.push(...localEdits);\n rewritten += 1;\n };\n\n /**\n * `skipMigrate: true` becomes `migration: { use: false }`; `skipMigrate: false` is the default and\n * is removed. Anything that is not a boolean literal, or a model that already has `migration`, is\n * reported and left alone.\n */\n const migrateSkipMigrate = (argument: ts.ObjectLiteralExpression) => {\n const property = argument.properties.find((candidate) => nameOf(candidate) === 'skipMigrate');\n if (!property) {\n return;\n }\n\n if (!typescript.isPropertyAssignment(property)) {\n report(property, 'skipMigrate is a shorthand property; left untouched');\n return;\n }\n\n if (argument.properties.some((candidate) => nameOf(candidate) === 'migration')) {\n report(property, 'skipMigrate and migration are both set; left untouched');\n return;\n }\n\n const { initializer } = property;\n if (initializer.kind === typescript.SyntaxKind.TrueKeyword) {\n edits.push({\n start: property.getStart(sourceFile),\n end: property.end,\n text: 'migration: { use: false }',\n });\n } else if (initializer.kind === typescript.SyntaxKind.FalseKeyword) {\n edits.push(removal(property));\n } else {\n report(property, 'skipMigrate is not a boolean literal; left untouched');\n return;\n }\n\n rewritten += 1;\n };\n\n const visit = (node: ts.Node) => {\n if (\n typescript.isDecorator(node) &&\n typescript.isCallExpression(node.expression) &&\n isModelCallee(node.expression.expression)\n ) {\n const argument = node.expression.arguments[0];\n\n if (argument && typescript.isObjectLiteralExpression(argument)) {\n const settingsProperty = argument.properties.find(\n (property) => nameOf(property) === 'settings',\n );\n\n if (settingsProperty) {\n if (\n typescript.isPropertyAssignment(settingsProperty) &&\n typescript.isObjectLiteralExpression(settingsProperty.initializer)\n ) {\n migrateSettings(settingsProperty.initializer);\n } else {\n report(\n settingsProperty,\n 'settings is not an object literal (a variable, a call or a shorthand); left untouched',\n );\n }\n }\n\n migrateSkipMigrate(argument);\n } else if (argument) {\n report(\n argument,\n '@model argument is not an object literal (a variable or a call); left untouched',\n );\n }\n }\n\n typescript.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n // Neighbouring removals can touch the same comma: merge those, then apply from the end so\n // earlier offsets stay valid.\n const ascending = [...edits].sort((a, b) => a.start - b.start || a.end - b.end);\n const merged: IEdit[] = [];\n for (const edit of ascending) {\n const previous = merged[merged.length - 1];\n if (previous && edit.start < previous.end && previous.text === '' && edit.text === '') {\n previous.end = Math.max(previous.end, edit.end);\n continue;\n }\n\n merged.push({ ...edit });\n }\n\n let output = source;\n for (const edit of merged.reverse()) {\n output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);\n }\n\n return { output, changed: output !== source, rewritten, reports };\n }\n}\n"]}