- introduce new on_property field for Extractor allowing to define the property to use for the label extraction
- use property (if provided) and allow label extraction via this approach - FIX https://github.com/mikepenz/release-changelog-builder-action/issues/208
This commit is contained in:
+35
-6
@@ -1074,7 +1074,18 @@ function buildChangelog(prs, config, options) {
|
|||||||
for (const extractor of labelExtractors) {
|
for (const extractor of labelExtractors) {
|
||||||
if (extractor.pattern != null) {
|
if (extractor.pattern != null) {
|
||||||
for (const pr of prs) {
|
for (const pr of prs) {
|
||||||
const label = pr.body.replace(extractor.pattern, extractor.target);
|
let label;
|
||||||
|
if (extractor.onProperty !== undefined) {
|
||||||
|
let value = pr[extractor.onProperty];
|
||||||
|
if (value === undefined) {
|
||||||
|
core.warning(`⚠️ the provided property '${extractor.onProperty}' for \`label_extractor\` is not valid`);
|
||||||
|
value = pr['body'];
|
||||||
|
}
|
||||||
|
label = value.replace(extractor.pattern, extractor.target);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
label = pr.body.replace(extractor.pattern, extractor.target);
|
||||||
|
}
|
||||||
if (label !== '') {
|
if (label !== '') {
|
||||||
pr.labels.push(label);
|
pr.labels.push(label);
|
||||||
}
|
}
|
||||||
@@ -1208,16 +1219,22 @@ function validateTransfomers(specifiedTransformers) {
|
|||||||
return transformers
|
return transformers
|
||||||
.map(transformer => {
|
.map(transformer => {
|
||||||
try {
|
try {
|
||||||
|
let onProperty = undefined;
|
||||||
|
if (transformer.hasOwnProperty('on_property')) {
|
||||||
|
onProperty = transformer.on_property;
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
pattern: new RegExp(transformer.pattern.replace('\\\\', '\\'), 'gu'),
|
pattern: new RegExp(transformer.pattern.replace('\\\\', '\\'), 'gu'),
|
||||||
target: transformer.target
|
target: transformer.target,
|
||||||
|
onProperty
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
core.warning(`⚠️ Bad replacer regex: ${transformer.pattern}`);
|
core.warning(`⚠️ Bad replacer regex: ${transformer.pattern}`);
|
||||||
return {
|
return {
|
||||||
pattern: null,
|
pattern: null,
|
||||||
target: ''
|
target: '',
|
||||||
|
onProperty: undefined
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -4685,6 +4702,7 @@ const Endpoints = {
|
|||||||
actions: {
|
actions: {
|
||||||
addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
|
addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
|
||||||
cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
|
cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
|
||||||
|
createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
|
||||||
createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
|
createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
|
||||||
createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
||||||
createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
|
createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
|
||||||
@@ -4693,6 +4711,7 @@ const Endpoints = {
|
|||||||
createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
|
createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
|
||||||
createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
|
createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
|
||||||
deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
|
deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
|
||||||
|
deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
|
||||||
deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
|
deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
|
||||||
deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
||||||
deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
|
deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
|
||||||
@@ -4709,16 +4728,20 @@ const Endpoints = {
|
|||||||
getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
|
getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
|
||||||
getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
|
getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
|
||||||
getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
|
getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
|
||||||
|
getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
|
||||||
|
getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
|
||||||
getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
|
getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
|
||||||
getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
|
getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
|
||||||
getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
|
getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
|
||||||
getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
|
getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
|
||||||
getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
|
getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
|
||||||
|
getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
|
||||||
getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
|
getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
|
||||||
renamed: ["actions", "getGithubActionsPermissionsRepository"]
|
renamed: ["actions", "getGithubActionsPermissionsRepository"]
|
||||||
}],
|
}],
|
||||||
getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
|
getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
|
||||||
getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
|
||||||
|
getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
|
||||||
getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
|
getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
|
||||||
getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
|
getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
|
||||||
getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
|
getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
|
||||||
@@ -4726,6 +4749,7 @@ const Endpoints = {
|
|||||||
getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
|
getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
|
||||||
getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
|
getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
|
||||||
listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
|
listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
|
||||||
|
listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
|
||||||
listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
|
listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
|
||||||
listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
|
listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
|
||||||
listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
|
listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
|
||||||
@@ -4741,6 +4765,7 @@ const Endpoints = {
|
|||||||
listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
|
listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
|
||||||
reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
|
reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
|
||||||
removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
|
removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
|
||||||
|
reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
|
||||||
setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
|
setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
|
||||||
setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
|
setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
|
||||||
setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
|
setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
|
||||||
@@ -5373,7 +5398,7 @@ const Endpoints = {
|
|||||||
previews: ["squirrel-girl"]
|
previews: ["squirrel-girl"]
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
deprecated: "octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/v3/reactions/#delete-a-reaction-legacy"
|
deprecated: "octokit.reactions.deleteLegacy() is deprecated, see https://docs.github.com/rest/reference/reactions/#delete-a-reaction-legacy"
|
||||||
}],
|
}],
|
||||||
listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", {
|
listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", {
|
||||||
mediaType: {
|
mediaType: {
|
||||||
@@ -5442,6 +5467,7 @@ const Endpoints = {
|
|||||||
createForAuthenticatedUser: ["POST /user/repos"],
|
createForAuthenticatedUser: ["POST /user/repos"],
|
||||||
createFork: ["POST /repos/{owner}/{repo}/forks"],
|
createFork: ["POST /repos/{owner}/{repo}/forks"],
|
||||||
createInOrg: ["POST /orgs/{org}/repos"],
|
createInOrg: ["POST /orgs/{org}/repos"],
|
||||||
|
createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
|
||||||
createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
|
createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
|
||||||
createPagesSite: ["POST /repos/{owner}/{repo}/pages", {
|
createPagesSite: ["POST /repos/{owner}/{repo}/pages", {
|
||||||
mediaType: {
|
mediaType: {
|
||||||
@@ -5459,6 +5485,7 @@ const Endpoints = {
|
|||||||
delete: ["DELETE /repos/{owner}/{repo}"],
|
delete: ["DELETE /repos/{owner}/{repo}"],
|
||||||
deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
|
deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
|
||||||
deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
|
deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
|
||||||
|
deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
|
||||||
deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
|
deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
|
||||||
deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
|
deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
|
||||||
deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", {
|
deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", {
|
||||||
@@ -5507,6 +5534,7 @@ const Endpoints = {
|
|||||||
get: ["GET /repos/{owner}/{repo}"],
|
get: ["GET /repos/{owner}/{repo}"],
|
||||||
getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
|
getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
|
||||||
getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
|
getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
|
||||||
|
getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
|
||||||
getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
|
getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
|
||||||
getAllTopics: ["GET /repos/{owner}/{repo}/topics", {
|
getAllTopics: ["GET /repos/{owner}/{repo}/topics", {
|
||||||
mediaType: {
|
mediaType: {
|
||||||
@@ -5534,6 +5562,7 @@ const Endpoints = {
|
|||||||
getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
|
getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
|
||||||
getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
|
getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
|
||||||
getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
|
getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
|
||||||
|
getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
|
||||||
getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
|
getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
|
||||||
getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
|
getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
|
||||||
getPages: ["GET /repos/{owner}/{repo}/pages"],
|
getPages: ["GET /repos/{owner}/{repo}/pages"],
|
||||||
@@ -5745,7 +5774,7 @@ const Endpoints = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const VERSION = "4.12.2";
|
const VERSION = "4.13.2";
|
||||||
|
|
||||||
function endpointsToMethods(octokit, endpointsMap) {
|
function endpointsToMethods(octokit, endpointsMap) {
|
||||||
const newMethods = {};
|
const newMethods = {};
|
||||||
@@ -6071,7 +6100,7 @@ var pluginRequestLog = __nccwpck_require__(8883);
|
|||||||
var pluginPaginateRest = __nccwpck_require__(4193);
|
var pluginPaginateRest = __nccwpck_require__(4193);
|
||||||
var pluginRestEndpointMethods = __nccwpck_require__(3044);
|
var pluginRestEndpointMethods = __nccwpck_require__(3044);
|
||||||
|
|
||||||
const VERSION = "18.2.1";
|
const VERSION = "18.3.2";
|
||||||
|
|
||||||
const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.restEndpointMethods, pluginPaginateRest.paginateRest).defaults({
|
const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.restEndpointMethods, pluginPaginateRest.paginateRest).defaults({
|
||||||
userAgent: `octokit-rest.js/${VERSION}`
|
userAgent: `octokit-rest.js/${VERSION}`
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -9,7 +9,7 @@ export interface Configuration {
|
|||||||
empty_template: string
|
empty_template: string
|
||||||
categories: Category[]
|
categories: Category[]
|
||||||
ignore_labels: string[]
|
ignore_labels: string[]
|
||||||
label_extractor: Transformer[]
|
label_extractor: Extractor[]
|
||||||
transformers: Transformer[]
|
transformers: Transformer[]
|
||||||
tag_resolver: TagResolver
|
tag_resolver: TagResolver
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,10 @@ export interface Transformer {
|
|||||||
target: string
|
target: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Extractor extends Transformer {
|
||||||
|
on_property: 'title' | 'author' | 'milestone' | 'body' | undefined
|
||||||
|
}
|
||||||
|
|
||||||
export interface TagResolver {
|
export interface TagResolver {
|
||||||
method: string // semver, sort
|
method: string // semver, sort
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-3
@@ -2,6 +2,7 @@ import {PullRequestInfo, sortPullRequests} from './pullRequests'
|
|||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import {ReleaseNotesOptions} from './releaseNotes'
|
import {ReleaseNotesOptions} from './releaseNotes'
|
||||||
import {
|
import {
|
||||||
|
Extractor,
|
||||||
Category,
|
Category,
|
||||||
Configuration,
|
Configuration,
|
||||||
Transformer,
|
Transformer,
|
||||||
@@ -24,7 +25,19 @@ export function buildChangelog(
|
|||||||
for (const extractor of labelExtractors) {
|
for (const extractor of labelExtractors) {
|
||||||
if (extractor.pattern != null) {
|
if (extractor.pattern != null) {
|
||||||
for (const pr of prs) {
|
for (const pr of prs) {
|
||||||
const label = pr.body.replace(extractor.pattern, extractor.target)
|
let label
|
||||||
|
if (extractor.onProperty !== undefined) {
|
||||||
|
let value: string = pr[extractor.onProperty]
|
||||||
|
if (value === undefined) {
|
||||||
|
core.warning(
|
||||||
|
`⚠️ the provided property '${extractor.onProperty}' for \`label_extractor\` is not valid`
|
||||||
|
)
|
||||||
|
value = pr['body']
|
||||||
|
}
|
||||||
|
label = value.replace(extractor.pattern, extractor.target)
|
||||||
|
} else {
|
||||||
|
label = pr.body.replace(extractor.pattern, extractor.target)
|
||||||
|
}
|
||||||
if (label !== '') {
|
if (label !== '') {
|
||||||
pr.labels.push(label)
|
pr.labels.push(label)
|
||||||
}
|
}
|
||||||
@@ -222,15 +235,22 @@ function validateTransfomers(
|
|||||||
return transformers
|
return transformers
|
||||||
.map(transformer => {
|
.map(transformer => {
|
||||||
try {
|
try {
|
||||||
|
let onProperty = undefined
|
||||||
|
if (transformer.hasOwnProperty('on_property')) {
|
||||||
|
onProperty = (transformer as Extractor).on_property
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
pattern: new RegExp(transformer.pattern.replace('\\\\', '\\'), 'gu'),
|
pattern: new RegExp(transformer.pattern.replace('\\\\', '\\'), 'gu'),
|
||||||
target: transformer.target
|
target: transformer.target,
|
||||||
|
onProperty
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
core.warning(`⚠️ Bad replacer regex: ${transformer.pattern}`)
|
core.warning(`⚠️ Bad replacer regex: ${transformer.pattern}`)
|
||||||
return {
|
return {
|
||||||
pattern: null,
|
pattern: null,
|
||||||
target: ''
|
target: '',
|
||||||
|
onProperty: undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -240,4 +260,5 @@ function validateTransfomers(
|
|||||||
interface RegexTransformer {
|
interface RegexTransformer {
|
||||||
pattern: RegExp | null
|
pattern: RegExp | null
|
||||||
target: string
|
target: string
|
||||||
|
onProperty: 'title' | 'author' | 'milestone' | 'body' | undefined
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user