@things-factory/compliance 10.1.255 → 10.1.257
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/dist-client/components/compliance-case-form.d.ts +11 -6
- package/dist-client/components/compliance-case-form.js +67 -88
- package/dist-client/components/compliance-case-form.js.map +1 -1
- package/dist-client/components/compliance-case-sheet.d.ts +14 -12
- package/dist-client/components/compliance-case-sheet.js +92 -133
- package/dist-client/components/compliance-case-sheet.js.map +1 -1
- package/dist-client/components/compliance-my-inventions.d.ts +3 -4
- package/dist-client/components/compliance-my-inventions.js +10 -30
- package/dist-client/components/compliance-my-inventions.js.map +1 -1
- package/dist-client/components/compliance-my-privacy-requests.d.ts +6 -6
- package/dist-client/components/compliance-my-privacy-requests.js +30 -66
- package/dist-client/components/compliance-my-privacy-requests.js.map +1 -1
- package/dist-client/components/compliance-my-reports.d.ts +3 -4
- package/dist-client/components/compliance-my-reports.js +19 -40
- package/dist-client/components/compliance-my-reports.js.map +1 -1
- package/dist-client/components/invention-report-form.d.ts +5 -4
- package/dist-client/components/invention-report-form.js +24 -45
- package/dist-client/components/invention-report-form.js.map +1 -1
- package/dist-client/components/my-trainings.d.ts +3 -5
- package/dist-client/components/my-trainings.js +20 -49
- package/dist-client/components/my-trainings.js.map +1 -1
- package/dist-client/components/seal-use-form.d.ts +9 -6
- package/dist-client/components/seal-use-form.js +60 -81
- package/dist-client/components/seal-use-form.js.map +1 -1
- package/dist-client/components/training-attendance-form.d.ts +6 -4
- package/dist-client/components/training-attendance-form.js +30 -50
- package/dist-client/components/training-attendance-form.js.map +1 -1
- package/dist-client/pages/regulation-detail.d.ts +17 -5
- package/dist-client/pages/regulation-detail.js +202 -133
- package/dist-client/pages/regulation-detail.js.map +1 -1
- package/dist-client/pages/regulations.d.ts +7 -5
- package/dist-client/pages/regulations.js +79 -68
- package/dist-client/pages/regulations.js.map +1 -1
- package/dist-client/regulation/regulation-fragments.js +5 -0
- package/dist-client/regulation/regulation-fragments.js.map +1 -1
- package/dist-client/regulation/regulation-guide.js +2 -1
- package/dist-client/regulation/regulation-guide.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/words.js +2 -2
- package/dist-client/words.js.map +1 -1
- package/dist-server/index.d.ts +1 -0
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-query.js +1 -1
- package/dist-server/service/compliance-case/compliance-case-query.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-rules.d.ts +1 -3
- package/dist-server/service/compliance-case/compliance-case-rules.js +2 -4
- package/dist-server/service/compliance-case/compliance-case-rules.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-service.d.ts +3 -3
- package/dist-server/service/compliance-case/compliance-case-service.js +4 -6
- package/dist-server/service/compliance-case/compliance-case-service.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case-type.js +1 -1
- package/dist-server/service/compliance-case/compliance-case-type.js.map +1 -1
- package/dist-server/service/compliance-case/compliance-case.js +1 -1
- package/dist-server/service/compliance-case/compliance-case.js.map +1 -1
- package/dist-server/service/index.d.ts +1 -1
- package/dist-server/service/index.js +2 -1
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/regulation/regulation-mutation.d.ts +1 -0
- package/dist-server/service/regulation/regulation-mutation.js +14 -0
- package/dist-server/service/regulation/regulation-mutation.js.map +1 -1
- package/dist-server/service/regulation/regulation-read.js +11 -2
- package/dist-server/service/regulation/regulation-read.js.map +1 -1
- package/dist-server/service/regulation/regulation-rules.d.ts +25 -6
- package/dist-server/service/regulation/regulation-rules.js +85 -29
- package/dist-server/service/regulation/regulation-rules.js.map +1 -1
- package/dist-server/service/regulation/regulation-service.d.ts +12 -0
- package/dist-server/service/regulation/regulation-service.js +48 -7
- package/dist-server/service/regulation/regulation-service.js.map +1 -1
- package/dist-server/service/regulation/regulation-type.d.ts +4 -0
- package/dist-server/service/regulation/regulation-type.js +16 -0
- package/dist-server/service/regulation/regulation-type.js.map +1 -1
- package/dist-server/service/regulation/regulation.d.ts +3 -1
- package/dist-server/service/regulation/regulation.js +12 -2
- package/dist-server/service/regulation/regulation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/work-doors.d.ts +1 -0
- package/dist-server/work-doors.js +15 -0
- package/dist-server/work-doors.js.map +1 -0
- package/package.json +17 -17
- package/translations/en.json +46 -14
- package/translations/es.json +46 -14
- package/translations/ja.json +46 -14
- package/translations/ko.json +46 -14
- package/translations/ms.json +46 -14
- package/translations/zh.json +46 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compliance-case.js","sourceRoot":"","sources":["../../../server/service/compliance-case/compliance-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Employee } from '@things-factory/organization'\nimport { Domain } from '@things-factory/shell'\n\n/** What was reported. */\nexport enum ComplianceCaseKind {\n /** 직장 내 괴롭힘 - 근로기준법 §76의2 · §76의3. */\n HARASSMENT = 'HARASSMENT',\n /** 직장 내 성희롱 - 남녀고용평등법 §14. */\n SEXUAL_HARASSMENT = 'SEXUAL_HARASSMENT'\n}\n\nregisterEnumType(ComplianceCaseKind, { name: 'ComplianceCaseKind', description: 'workplace harassment or sexual harassment' })\n\n/** Where a case stands - read from what is written on it, kept for the list's filter. */\nexport enum ComplianceCaseStatus {\n RECEIVED = 'RECEIVED',\n INVESTIGATING = 'INVESTIGATING',\n /** The finding is written. */\n DECIDED = 'DECIDED',\n /** The result is told to the reporter and the victim. */\n TOLD = 'TOLD',\n CLOSED = 'CLOSED'\n}\n\nregisterEnumType(ComplianceCaseStatus, { name: 'ComplianceCaseStatus', description: 'received, investigating, decided, told, closed' })\n\n/**\n * 신고 사건 (ADR-0187 decision 21) - one report of workplace harassment or sexual harassment: who reported it, who it\n * happened to, who it is against, when and what; who investigates it, what the investigation found, how the victim was\n * protected and what was done to those reported against. Read only by the reporter, the case handlers and the case's\n * investigators - never by one reported against. Nothing of it goes into a notice, an AI read or a search.\n */\n@Entity({ name: 'compliance_cases' })\n@Index('ix_compliance_case_0', (row: ComplianceCase) => [row.domain, row.receivedOn])\n@ObjectType({ description: 'Entity for ComplianceCase - a report of workplace harassment or sexual harassment and its handling' })\nexport class ComplianceCase {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCase) => row.domain)\n domainId?: string\n\n @Column()\n @Field(type => ComplianceCaseKind)\n kind: ComplianceCaseKind\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee who reported it' })\n reporter?: Employee\n\n @RelationId((row: ComplianceCase) => row.reporter)\n reporterId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The account of the reporter - the one who reads its progress' })\n reporterUser?: User\n\n @RelationId((row: ComplianceCase) => row.reporterUser)\n reporterUserId?: string\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee it happened to, when the reporter says' })\n victim?: Employee\n\n @RelationId((row: ComplianceCase) => row.victim)\n victimId?: string\n\n @ManyToMany(type => Employee)\n @JoinTable({ name: 'compliance_cases_accused' })\n @Field(type => [Employee], { nullable: true, description: 'The employees reported against' })\n accused?: Employee[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it happened, when the reporter knows' })\n occurredOn?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What happened, in the reporter\\'s words' })\n description: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was received' })\n receivedOn: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation is to start by - the domain\\'s days from receipt' })\n investigationDueOn?: string\n\n @Column({ default: false })\n @Field({ description: 'Every case handler was among those reported against when it came in - nobody inside the company investigates it' })\n noInsideHandler: boolean\n\n @ManyToMany(type => User)\n @JoinTable({ name: 'compliance_cases_investigators' })\n @Field(type => [User], { nullable: true, description: 'Who investigates it - set by the handler for this case, an outside labour attorney among them' })\n investigators?: User[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation started' })\n investigationStartedOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to protect the victim - leave, a move of place, keeping apart' })\n protectionMeasures?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the victim said of the protection measures' })\n victimOpinion?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the investigation found' })\n finding?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to those reported against' })\n actionOnAccused?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The result as told to the reporter and the victim' })\n resultNotice?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the result was told' })\n resultToldOn?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it was closed' })\n closedOn?: string\n\n @Column({ default: ComplianceCaseStatus.RECEIVED })\n @Field(type => ComplianceCaseStatus)\n status: ComplianceCaseStatus\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCase) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((row: ComplianceCase) => row.updater)\n updaterId?: string\n}\n\n/**\n * 조사 기록 - one entry of a case's investigation: an interview, a statement, what was looked at. Written and never\n * changed; a mistake is set right by the next entry. Read only by those who read the whole case.\n */\n@Entity({ name: 'compliance_case_entries' })\n@Index('ix_compliance_case_entry_0', (row: ComplianceCaseEntry) => [row.domain, row.complianceCase])\n@ObjectType({ description: 'Entity for ComplianceCaseEntry - one entry of the investigation record of a case' })\nexport class ComplianceCaseEntry {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCaseEntry) => row.domain)\n domainId?: string\n\n @ManyToOne(type => ComplianceCase)\n complianceCase?: ComplianceCase\n\n @RelationId((row: ComplianceCaseEntry) => row.complianceCase)\n @Field({ description: 'The case it is of' })\n complianceCaseId?: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD of what it records' })\n writtenOn: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What it records' })\n body: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCaseEntry) => row.creator)\n creatorId?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compliance-case.js","sourceRoot":"","sources":["../../../server/service/compliance-case/compliance-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Employee } from '@things-factory/organization'\nimport { Domain } from '@things-factory/shell'\n\n/** What was reported. */\nexport enum ComplianceCaseKind {\n /** 직장 내 괴롭힘 - 근로기준법 §76의2 · §76의3. */\n HARASSMENT = 'HARASSMENT',\n /** 직장 내 성희롱 - 남녀고용평등법 §14. */\n SEXUAL_HARASSMENT = 'SEXUAL_HARASSMENT'\n}\n\nregisterEnumType(ComplianceCaseKind, { name: 'ComplianceCaseKind', description: 'workplace harassment or sexual harassment' })\n\n/** Where a case stands - read from what is written on it, kept for the list's filter. */\nexport enum ComplianceCaseStatus {\n RECEIVED = 'RECEIVED',\n INVESTIGATING = 'INVESTIGATING',\n /** The finding is written. */\n DECIDED = 'DECIDED',\n /** The result is told to the reporter and the victim. */\n TOLD = 'TOLD',\n CLOSED = 'CLOSED'\n}\n\nregisterEnumType(ComplianceCaseStatus, { name: 'ComplianceCaseStatus', description: 'received, investigating, decided, told, closed' })\n\n/**\n * 신고 사건 (ADR-0187 decision 21) - one report of workplace harassment or sexual harassment: who reported it, who it\n * happened to, who it is against, when and what; who investigates it, what the investigation found, how the victim was\n * protected and what was done to those reported against. Read only by the reporter, the case handlers and the case's\n * investigators - never by one reported against. Nothing of it goes into a notice, an AI read or a search.\n */\n@Entity({ name: 'compliance_cases' })\n@Index('ix_compliance_case_0', (row: ComplianceCase) => [row.domain, row.receivedOn])\n@ObjectType({ description: 'Entity for ComplianceCase - a report of workplace harassment or sexual harassment and its handling' })\nexport class ComplianceCase {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCase) => row.domain)\n domainId?: string\n\n @Column()\n @Field(type => ComplianceCaseKind)\n kind: ComplianceCaseKind\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee who reported it' })\n reporter?: Employee\n\n @RelationId((row: ComplianceCase) => row.reporter)\n reporterId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The account of the reporter - the one who reads its progress' })\n reporterUser?: User\n\n @RelationId((row: ComplianceCase) => row.reporterUser)\n reporterUserId?: string\n\n @ManyToOne(type => Employee, { nullable: true })\n @Field(type => Employee, { nullable: true, description: 'The employee it happened to, when the reporter says' })\n victim?: Employee\n\n @RelationId((row: ComplianceCase) => row.victim)\n victimId?: string\n\n @ManyToMany(type => Employee)\n @JoinTable({ name: 'compliance_cases_accused' })\n @Field(type => [Employee], { nullable: true, description: 'The employees reported against' })\n accused?: Employee[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it happened, when the reporter knows' })\n occurredOn?: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What happened, in the reporter\\'s words' })\n description: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD it was received' })\n receivedOn: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation is to start by - the domain\\'s days from receipt' })\n investigationDueOn?: string\n\n @Column({ default: false })\n @Field({ description: 'No case handler was left to take it when it came in - it waits for the handler the company names (amendment 5)' })\n noInsideHandler: boolean\n\n @ManyToMany(type => User)\n @JoinTable({ name: 'compliance_cases_investigators' })\n @Field(type => [User], { nullable: true, description: 'Who investigates it - set by the handler for this case, an outside labour attorney among them' })\n investigators?: User[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the investigation started' })\n investigationStartedOn?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to protect the victim - leave, a move of place, keeping apart' })\n protectionMeasures?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the victim said of the protection measures' })\n victimOpinion?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What the investigation found' })\n finding?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What was done to those reported against' })\n actionOnAccused?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The result as told to the reporter and the victim' })\n resultNotice?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD the result was told' })\n resultToldOn?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it was closed' })\n closedOn?: string\n\n @Column({ default: ComplianceCaseStatus.RECEIVED })\n @Field(type => ComplianceCaseStatus)\n status: ComplianceCaseStatus\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCase) => row.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((row: ComplianceCase) => row.updater)\n updaterId?: string\n}\n\n/**\n * 조사 기록 - one entry of a case's investigation: an interview, a statement, what was looked at. Written and never\n * changed; a mistake is set right by the next entry. Read only by those who read the whole case.\n */\n@Entity({ name: 'compliance_case_entries' })\n@Index('ix_compliance_case_entry_0', (row: ComplianceCaseEntry) => [row.domain, row.complianceCase])\n@ObjectType({ description: 'Entity for ComplianceCaseEntry - one entry of the investigation record of a case' })\nexport class ComplianceCaseEntry {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((row: ComplianceCaseEntry) => row.domain)\n domainId?: string\n\n @ManyToOne(type => ComplianceCase)\n complianceCase?: ComplianceCase\n\n @RelationId((row: ComplianceCaseEntry) => row.complianceCase)\n @Field({ description: 'The case it is of' })\n complianceCaseId?: string\n\n @Column()\n @Field({ description: 'YYYY-MM-DD of what it records' })\n writtenOn: string\n\n @Column({ type: 'text' })\n @Field({ description: 'What it records' })\n body: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((row: ComplianceCaseEntry) => row.creator)\n creatorId?: string\n}\n"]}
|
|
@@ -5,7 +5,7 @@ export * from './seal-use/seal-use-service';
|
|
|
5
5
|
export * from './regulation/regulation';
|
|
6
6
|
export * from './regulation/regulation-rules';
|
|
7
7
|
export * from './regulation/regulation-type';
|
|
8
|
-
export { REGULATION_ADOPTED_TRIGGER, REGULATION_HELP_SOURCE, REGULATION_PROCEDURE_REF_TYPE, regulationsWithoutFiling } from './regulation/regulation-service';
|
|
8
|
+
export { REGULATION_ADOPTED_TRIGGER, REGULATION_HELP_SOURCE, REGULATION_ORIGINAL_REF_TYPE, REGULATION_PROCEDURE_REF_TYPE, regulationsWithoutFiling } from './regulation/regulation-service';
|
|
9
9
|
export * from './training/training';
|
|
10
10
|
export * from './training/training-kinds';
|
|
11
11
|
export * from './training/training-rules';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.subscribers = exports.schema = exports.entities = exports.registerLegalRecordFiles = exports.DISPUTE_REF_TYPE = exports.disputeHearingsSoon = exports.saveDisputeHearings = exports.saveDisputes = exports.INVENTION_REF_TYPE = exports.inventionDecisionsDue = exports.saveInventionRewards = exports.updateInventions = exports.visibleInvention = exports.reportInvention = exports.LEGAL_REGISTRATION_REF_TYPE = exports.legalCentreChangesNotFiled = exports.legalRegistrationFeesDue = exports.legalRegistrationsInRenewalWindow = exports.legalRegistrationsExpiring = exports.noteCentreEmployeeChange = exports.fileCentreChanges = exports.saveLegalResearchers = exports.saveLegalRegistrations = exports.registerComplianceCaseFiles = exports.registerTrainings = exports.TRAINING_READ_TARGETS = exports.TRAINING_STANDINGS_READ = exports.regulationsWithoutFiling = exports.REGULATION_PROCEDURE_REF_TYPE = exports.REGULATION_HELP_SOURCE = exports.REGULATION_ADOPTED_TRIGGER = void 0;
|
|
3
|
+
exports.subscribers = exports.schema = exports.entities = exports.registerLegalRecordFiles = exports.DISPUTE_REF_TYPE = exports.disputeHearingsSoon = exports.saveDisputeHearings = exports.saveDisputes = exports.INVENTION_REF_TYPE = exports.inventionDecisionsDue = exports.saveInventionRewards = exports.updateInventions = exports.visibleInvention = exports.reportInvention = exports.LEGAL_REGISTRATION_REF_TYPE = exports.legalCentreChangesNotFiled = exports.legalRegistrationFeesDue = exports.legalRegistrationsInRenewalWindow = exports.legalRegistrationsExpiring = exports.noteCentreEmployeeChange = exports.fileCentreChanges = exports.saveLegalResearchers = exports.saveLegalRegistrations = exports.registerComplianceCaseFiles = exports.registerTrainings = exports.TRAINING_READ_TARGETS = exports.TRAINING_STANDINGS_READ = exports.regulationsWithoutFiling = exports.REGULATION_PROCEDURE_REF_TYPE = exports.REGULATION_ORIGINAL_REF_TYPE = exports.REGULATION_HELP_SOURCE = exports.REGULATION_ADOPTED_TRIGGER = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/* EXPORT ENTITY TYPES */
|
|
6
6
|
tslib_1.__exportStar(require("./seal-use/seal-use"), exports);
|
|
@@ -13,6 +13,7 @@ tslib_1.__exportStar(require("./regulation/regulation-type"), exports);
|
|
|
13
13
|
var regulation_service_1 = require("./regulation/regulation-service");
|
|
14
14
|
Object.defineProperty(exports, "REGULATION_ADOPTED_TRIGGER", { enumerable: true, get: function () { return regulation_service_1.REGULATION_ADOPTED_TRIGGER; } });
|
|
15
15
|
Object.defineProperty(exports, "REGULATION_HELP_SOURCE", { enumerable: true, get: function () { return regulation_service_1.REGULATION_HELP_SOURCE; } });
|
|
16
|
+
Object.defineProperty(exports, "REGULATION_ORIGINAL_REF_TYPE", { enumerable: true, get: function () { return regulation_service_1.REGULATION_ORIGINAL_REF_TYPE; } });
|
|
16
17
|
Object.defineProperty(exports, "REGULATION_PROCEDURE_REF_TYPE", { enumerable: true, get: function () { return regulation_service_1.REGULATION_PROCEDURE_REF_TYPE; } });
|
|
17
18
|
Object.defineProperty(exports, "regulationsWithoutFiling", { enumerable: true, get: function () { return regulation_service_1.regulationsWithoutFiling; } });
|
|
18
19
|
tslib_1.__exportStar(require("./training/training"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,8DAAmC;AACnC,oEAAyC;AACzC,mEAAwC;AACxC,sEAA2C;AAC3C,kEAAuC;AACvC,wEAA6C;AAC7C,uEAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,8DAAmC;AACnC,oEAAyC;AACzC,mEAAwC;AACxC,sEAA2C;AAC3C,kEAAuC;AACvC,wEAA6C;AAC7C,uEAA4C;AAC5C,sEAA2L;AAAlL,gIAAA,0BAA0B,OAAA;AAAE,4HAAA,sBAAsB,OAAA;AAAE,kIAAA,4BAA4B,OAAA;AAAE,mIAAA,6BAA6B,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AAClJ,8DAAmC;AACnC,oEAAyC;AACzC,oEAAyC;AACzC,mEAAwC;AACxC,sEAA2C;AAC3C,qEAA0C;AAC1C,0DAAyF;AAAhF,wHAAA,uBAAuB,OAAA;AAAE,sHAAA,qBAAqB,OAAA;AACvD,kEAAgE;AAAvD,sHAAA,iBAAiB,OAAA;AAC1B,8DAAmC;AACnC,4EAAiD;AACjD,kFAAuD;AACvD,iFAAsD;AACtD,oFAAyD;AACzD,qDAA+D;AAAtD,8HAAA,2BAA2B,OAAA;AACpC,0EAA+C;AAC/C,gFAAqD;AACrD,+EAAoD;AACpD,kFAAuD;AACvD,kFAAuD;AACvD,wFAA6D;AAC7D,uFAA4D;AAC5D,8FAA6S;AAApS,oIAAA,sBAAsB,OAAA;AAAE,kIAAA,oBAAoB,OAAA;AAAE,+HAAA,iBAAiB,OAAA;AAAE,sIAAA,wBAAwB,OAAA;AAAE,wIAAA,0BAA0B,OAAA;AAAE,+IAAA,iCAAiC,OAAA;AAAE,sIAAA,wBAAwB,OAAA;AAAE,wIAAA,0BAA0B,OAAA;AAAE,yIAAA,2BAA2B,OAAA;AACpP,gEAAqC;AACrC,sEAA2C;AAC3C,qEAA0C;AAC1C,mEAAoK;AAA3J,oHAAA,eAAe,OAAA;AAAE,qHAAA,gBAAgB,OAAA;AAAE,qHAAA,gBAAgB,OAAA;AAAE,yHAAA,oBAAoB,OAAA;AAAE,0HAAA,qBAAqB,OAAA;AAAE,uHAAA,kBAAkB,OAAA;AAC7H,4DAAiC;AACjC,kEAAuC;AACvC,iEAAsC;AACtC,6DAAoH;AAA3G,+GAAA,YAAY,OAAA;AAAE,sHAAA,mBAAmB,OAAA;AAAE,sHAAA,mBAAmB,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AACjF,wEAA4E;AAAnE,8HAAA,wBAAwB,OAAA;AACjC,mEAAwC;AACxC,8DAAmC;AAEnC,mCAAmC;AACnC,yCAAuF;AACvF,6CAA+F;AAC/F,yCAAyF;AACzF,oDAAoE;AACpE,uDAA4G;AAC5G,qDAAyG;AACzG,6DAAkK;AAClK,2CAA4F;AAC5F,uCAAsF;AAEzE,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,mBAAe;IAClB,GAAG,qBAAkB;IACrB,GAAG,mBAAgB;IACnB,GAAG,qBAAkB;IACrB,GAAG,0BAAsB;IACzB,GAAG,yBAAqB;IACxB,GAAG,6BAAyB;IAC5B,GAAG,oBAAiB;IACpB,GAAG,kBAAe;CACnB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,oBAAgB;QACnB,GAAG,sBAAmB;QACtB,GAAG,oBAAiB;QACpB,GAAG,2BAAuB;QAC1B,GAAG,0BAAsB;QACzB,GAAG,8BAA0B;QAC7B,GAAG,qBAAkB;QACrB,GAAG,mBAAgB;KACpB;CACF,CAAA;AAED,iHAAiH;AACpG,QAAA,WAAW,GAAG,CAAC,GAAG,gCAA4B,CAAC,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './seal-use/seal-use'\nexport * from './seal-use/seal-use-rules'\nexport * from './seal-use/seal-use-type'\nexport * from './seal-use/seal-use-service'\nexport * from './regulation/regulation'\nexport * from './regulation/regulation-rules'\nexport * from './regulation/regulation-type'\nexport { REGULATION_ADOPTED_TRIGGER, REGULATION_HELP_SOURCE, REGULATION_ORIGINAL_REF_TYPE, REGULATION_PROCEDURE_REF_TYPE, regulationsWithoutFiling } from './regulation/regulation-service'\nexport * from './training/training'\nexport * from './training/training-kinds'\nexport * from './training/training-rules'\nexport * from './training/training-type'\nexport * from './training/training-service'\nexport * from './training/training-checks'\nexport { TRAINING_STANDINGS_READ, TRAINING_READ_TARGETS } from './training/training-read'\nexport { registerTrainings } from './training/training-register'\nexport * from './common/correction'\nexport * from './compliance-case/compliance-case'\nexport * from './compliance-case/compliance-case-rules'\nexport * from './compliance-case/compliance-case-type'\nexport * from './compliance-case/compliance-case-service'\nexport { registerComplianceCaseFiles } from './compliance-case'\nexport * from './privacy-record/privacy-record'\nexport * from './privacy-record/privacy-record-rules'\nexport * from './privacy-record/privacy-record-type'\nexport * from './privacy-record/privacy-record-service'\nexport * from './legal-registration/legal-registration'\nexport * from './legal-registration/legal-registration-rules'\nexport * from './legal-registration/legal-registration-type'\nexport { saveLegalRegistrations, saveLegalResearchers, fileCentreChanges, noteCentreEmployeeChange, legalRegistrationsExpiring, legalRegistrationsInRenewalWindow, legalRegistrationFeesDue, legalCentreChangesNotFiled, LEGAL_REGISTRATION_REF_TYPE } from './legal-registration/legal-registration-service'\nexport * from './invention/invention'\nexport * from './invention/invention-rules'\nexport * from './invention/invention-type'\nexport { reportInvention, visibleInvention, updateInventions, saveInventionRewards, inventionDecisionsDue, INVENTION_REF_TYPE } from './invention/invention-service'\nexport * from './dispute/dispute'\nexport * from './dispute/dispute-rules'\nexport * from './dispute/dispute-type'\nexport { saveDisputes, saveDisputeHearings, disputeHearingsSoon, DISPUTE_REF_TYPE } from './dispute/dispute-service'\nexport { registerLegalRecordFiles } from './legal-record/attachment-readers'\nexport * from './common/employee-reader'\nexport * from './common/legal-todo'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as SealUseEntities, resolvers as SealUseResolvers } from './seal-use'\nimport { entities as RegulationEntities, resolvers as RegulationResolvers } from './regulation'\nimport { entities as TrainingEntities, resolvers as TrainingResolvers } from './training'\nimport { entities as CorrectionEntities } from './common/correction'\nimport { entities as ComplianceCaseEntities, resolvers as ComplianceCaseResolvers } from './compliance-case'\nimport { entities as PrivacyRecordEntities, resolvers as PrivacyRecordResolvers } from './privacy-record'\nimport { entities as LegalRegistrationEntities, resolvers as LegalRegistrationResolvers, subscribers as LegalRegistrationSubscribers } from './legal-registration'\nimport { entities as InventionEntities, resolvers as InventionResolvers } from './invention'\nimport { entities as DisputeEntities, resolvers as DisputeResolvers } from './dispute'\n\nexport const entities = [\n /* ENTITIES */\n ...SealUseEntities,\n ...RegulationEntities,\n ...TrainingEntities,\n ...CorrectionEntities,\n ...ComplianceCaseEntities,\n ...PrivacyRecordEntities,\n ...LegalRegistrationEntities,\n ...InventionEntities,\n ...DisputeEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...SealUseResolvers,\n ...RegulationResolvers,\n ...TrainingResolvers,\n ...ComplianceCaseResolvers,\n ...PrivacyRecordResolvers,\n ...LegalRegistrationResolvers,\n ...InventionResolvers,\n ...DisputeResolvers\n ]\n}\n\n/* A research centre's change of staff is caught where organization saves the employee (ADR-0187 decision 23). */\nexport const subscribers = [...LegalRegistrationSubscribers]\n"]}
|
|
@@ -11,5 +11,6 @@ export declare class RegulationMutation {
|
|
|
11
11
|
recordRegulationProcedure(procedure: NewRegulationProcedure, files: FileUpload[], context: ResolverContext): Promise<RegulationProcedure>;
|
|
12
12
|
deleteRegulationProcedure(id: string, context: ResolverContext): Promise<boolean>;
|
|
13
13
|
submitRegulationVersion(id: string, context: ResolverContext): Promise<RegulationVersion>;
|
|
14
|
+
registerRegulationInForce(id: string, files: FileUpload[], context: ResolverContext): Promise<RegulationVersion>;
|
|
14
15
|
withdrawRegulationVersion(id: string, context: ResolverContext): Promise<RegulationVersion>;
|
|
15
16
|
}
|
|
@@ -37,6 +37,9 @@ let RegulationMutation = class RegulationMutation {
|
|
|
37
37
|
async submitRegulationVersion(id, context) {
|
|
38
38
|
return await (0, regulation_service_1.submitRegulationVersion)(id, context);
|
|
39
39
|
}
|
|
40
|
+
async registerRegulationInForce(id, files, context) {
|
|
41
|
+
return await (0, regulation_service_1.registerRegulationInForce)(id, files, context);
|
|
42
|
+
}
|
|
40
43
|
async withdrawRegulationVersion(id, context) {
|
|
41
44
|
return await (0, regulation_service_1.withdrawRegulationVersion)(id, context);
|
|
42
45
|
}
|
|
@@ -135,6 +138,17 @@ tslib_1.__decorate([
|
|
|
135
138
|
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
136
139
|
tslib_1.__metadata("design:returntype", Promise)
|
|
137
140
|
], RegulationMutation.prototype, "submitRegulationVersion", null);
|
|
141
|
+
tslib_1.__decorate([
|
|
142
|
+
(0, type_graphql_1.Directive)(KEEP),
|
|
143
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
144
|
+
(0, type_graphql_1.Mutation)(returns => regulation_1.RegulationVersion, { description: 'To register the first version of a rule as in force already, from its own day, with its original attached - no approval, no announcement (ADR-0187 amendment 2)' }),
|
|
145
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
146
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('files', type => [GraphQLUpload_js_1.default], { description: 'The original of the rule' })),
|
|
147
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
148
|
+
tslib_1.__metadata("design:type", Function),
|
|
149
|
+
tslib_1.__metadata("design:paramtypes", [String, Array, Object]),
|
|
150
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
151
|
+
], RegulationMutation.prototype, "registerRegulationInForce", null);
|
|
138
152
|
tslib_1.__decorate([
|
|
139
153
|
(0, type_graphql_1.Directive)(KEEP),
|
|
140
154
|
(0, type_graphql_1.Directive)('@transaction'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regulation-mutation.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver, UseMiddleware } from 'type-graphql'\n\nimport { SpeakRefusals } from '@things-factory/shell'\n\nimport { Regulation, RegulationProcedure, RegulationVersion } from './regulation'\nimport {\n createRegulation,\n deleteRegulationProcedure,\n deleteRegulations,\n deleteRegulationVersion,\n newRegulationVersion,\n recordRegulationProcedure,\n submitRegulationVersion,\n updateRegulation,\n updateRegulationVersion,\n withdrawRegulationVersion\n} from './regulation-service'\nimport { NewRegulation, NewRegulationProcedure, RegulationPatch, RegulationVersionPatch } from './regulation-type'\n\nconst KEEP = '@privilege(category: \"regulation\", privilege: \"mutation\", domainOwnerGranted: true)'\n\n@Resolver(Regulation)\n@UseMiddleware(SpeakRefusals)\nexport class RegulationMutation {\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Regulation, { description: 'To write a new company rule, with its first version to write (ADR-0187)' })\n async createRegulation(@Arg('regulation', type => NewRegulation) regulation: NewRegulation, @Ctx() context: ResolverContext): Promise<Regulation> {\n return await createRegulation(regulation, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Regulation, { description: 'To change the name, topics or place of a rule - its kind while none of its versions is adopted' })\n async updateRegulation(@Arg('id') id: string, @Arg('patch', type => RegulationPatch) patch: RegulationPatch, @Ctx() context: ResolverContext): Promise<Regulation> {\n return await updateRegulation(id, patch, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete rules none of whose versions was adopted or is in approval' })\n async deleteRegulations(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulations(ids, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: \"To start the next version of a rule from the latest one's text\" })\n async newRegulationVersion(@Arg('regulationId') regulationId: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await newRegulationVersion(regulationId, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To change a version being written' })\n async updateRegulationVersion(@Arg('id') id: string, @Arg('patch', type => RegulationVersionPatch) patch: RegulationVersionPatch, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await updateRegulationVersion(id, patch, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete a version being written' })\n async deleteRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulationVersion(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationProcedure, { description: 'To record an opinion heard, a consent given or the filing of a version, with its papers' })\n async recordRegulationProcedure(\n @Arg('procedure', type => NewRegulationProcedure) procedure: NewRegulationProcedure,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files: FileUpload[],\n @Ctx() context: ResolverContext\n ): Promise<RegulationProcedure> {\n return await recordRegulationProcedure(procedure, files, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To take a procedure off a version being written' })\n async deleteRegulationProcedure(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulationProcedure(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To put a version up for adoption - checked against the procedure the law asks; adopted at once where no approver is named' })\n async submitRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await submitRegulationVersion(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To take a version in approval back to writing' })\n async withdrawRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await withdrawRegulationVersion(id, context)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regulation-mutation.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver, UseMiddleware } from 'type-graphql'\n\nimport { SpeakRefusals } from '@things-factory/shell'\n\nimport { Regulation, RegulationProcedure, RegulationVersion } from './regulation'\nimport {\n createRegulation,\n deleteRegulationProcedure,\n deleteRegulations,\n deleteRegulationVersion,\n newRegulationVersion,\n recordRegulationProcedure,\n registerRegulationInForce,\n submitRegulationVersion,\n updateRegulation,\n updateRegulationVersion,\n withdrawRegulationVersion\n} from './regulation-service'\nimport { NewRegulation, NewRegulationProcedure, RegulationPatch, RegulationVersionPatch } from './regulation-type'\n\nconst KEEP = '@privilege(category: \"regulation\", privilege: \"mutation\", domainOwnerGranted: true)'\n\n@Resolver(Regulation)\n@UseMiddleware(SpeakRefusals)\nexport class RegulationMutation {\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Regulation, { description: 'To write a new company rule, with its first version to write (ADR-0187)' })\n async createRegulation(@Arg('regulation', type => NewRegulation) regulation: NewRegulation, @Ctx() context: ResolverContext): Promise<Regulation> {\n return await createRegulation(regulation, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Regulation, { description: 'To change the name, topics or place of a rule - its kind while none of its versions is adopted' })\n async updateRegulation(@Arg('id') id: string, @Arg('patch', type => RegulationPatch) patch: RegulationPatch, @Ctx() context: ResolverContext): Promise<Regulation> {\n return await updateRegulation(id, patch, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete rules none of whose versions was adopted or is in approval' })\n async deleteRegulations(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulations(ids, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: \"To start the next version of a rule from the latest one's text\" })\n async newRegulationVersion(@Arg('regulationId') regulationId: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await newRegulationVersion(regulationId, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To change a version being written' })\n async updateRegulationVersion(@Arg('id') id: string, @Arg('patch', type => RegulationVersionPatch) patch: RegulationVersionPatch, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await updateRegulationVersion(id, patch, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete a version being written' })\n async deleteRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulationVersion(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationProcedure, { description: 'To record an opinion heard, a consent given or the filing of a version, with its papers' })\n async recordRegulationProcedure(\n @Arg('procedure', type => NewRegulationProcedure) procedure: NewRegulationProcedure,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files: FileUpload[],\n @Ctx() context: ResolverContext\n ): Promise<RegulationProcedure> {\n return await recordRegulationProcedure(procedure, files, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To take a procedure off a version being written' })\n async deleteRegulationProcedure(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n return await deleteRegulationProcedure(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To put a version up for adoption - checked against the procedure the law asks; adopted at once where no approver is named' })\n async submitRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await submitRegulationVersion(id, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To register the first version of a rule as in force already, from its own day, with its original attached - no approval, no announcement (ADR-0187 amendment 2)' })\n async registerRegulationInForce(\n @Arg('id') id: string,\n @Arg('files', type => [GraphQLUpload], { description: 'The original of the rule' }) files: FileUpload[],\n @Ctx() context: ResolverContext\n ): Promise<RegulationVersion> {\n return await registerRegulationInForce(id, files, context)\n }\n\n @Directive(KEEP)\n @Directive('@transaction')\n @Mutation(returns => RegulationVersion, { description: 'To take a version in approval back to writing' })\n async withdrawRegulationVersion(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<RegulationVersion> {\n return await withdrawRegulationVersion(id, context)\n }\n}\n"]}
|
|
@@ -37,9 +37,10 @@ async function viewOfVersion(tx, context, version, siblings, keeper) {
|
|
|
37
37
|
const standing = (0, regulation_rules_1.standingOf)(siblings, today);
|
|
38
38
|
const adopted = siblings.filter(one => one.status === regulation_1.RegulationVersionStatus.ADOPTED && one.effectiveOn).sort((a, b) => (a.effectiveOn < b.effectiveOn ? -1 : 1));
|
|
39
39
|
const next = adopted.find(one => one.effectiveOn > (version.effectiveOn ?? '') && one.id !== version.id);
|
|
40
|
+
const parts = (0, regulation_rules_1.partsOf)(version.body);
|
|
40
41
|
const clauses = version.status === regulation_1.RegulationVersionStatus.ADOPTED
|
|
41
42
|
? await (0, shell_1.getRepository)(regulation_1.RegulationClause, tx).find({ where: { version: { id: version.id } }, order: { rank: 'ASC' } })
|
|
42
|
-
:
|
|
43
|
+
: parts.clauses.map((one, rank) => ({ id: `${version.id}:${rank}`, rank, versionId: version.id, ...one }));
|
|
43
44
|
const before = await (0, regulation_service_1.previousAdopted)((0, shell_1.getRepository)(regulation_1.RegulationVersion, tx).manager, version);
|
|
44
45
|
const changes = (0, regulation_rules_1.clauseChanges)(before ? (0, regulation_rules_1.clausesOf)(before.body) : [], (0, regulation_rules_1.clausesOf)(version.body)).map(one => ({ ...one, title: one.title ?? undefined }));
|
|
45
46
|
const announcement = version.announcementId ? (await (0, regulation_service_1.announcementsOfVersions)((0, shell_1.getRepository)(regulation_1.RegulationVersion, tx).manager, domain, [version.id])).get(version.id) : undefined;
|
|
@@ -49,7 +50,10 @@ async function viewOfVersion(tx, context, version, siblings, keeper) {
|
|
|
49
50
|
period: (0, regulation_rules_1.periodOfVersion)(version, standing, today),
|
|
50
51
|
endsOn: version.status === regulation_1.RegulationVersionStatus.ADOPTED ? next?.effectiveOn : undefined,
|
|
51
52
|
clauses,
|
|
53
|
+
appendix: parts.appendix ?? undefined,
|
|
54
|
+
text: parts.clauses.length ? undefined : version.body?.trim() || undefined,
|
|
52
55
|
changes,
|
|
56
|
+
originals: keeper && version.registeredInForce ? ((await (0, regulation_service_1.originalsOf)((0, shell_1.getRepository)(regulation_1.RegulationVersion, tx).manager, domain, [version.id])).get(version.id) ?? 0) : undefined,
|
|
53
57
|
procedures: keeper ? (await (0, regulation_service_1.proceduresOf)((0, shell_1.getRepository)(regulation_1.RegulationVersion, tx).manager, domain, [version.id])) : undefined,
|
|
54
58
|
announcement: keeper ? announcement : undefined,
|
|
55
59
|
told: announcement?.status === 'PUBLISHED',
|
|
@@ -89,7 +93,7 @@ async function regulationParts(domain) {
|
|
|
89
93
|
topic: `${regulation_service_1.REGULATION_HELP_SOURCE}/${regulation.code}`,
|
|
90
94
|
section: clause.number,
|
|
91
95
|
lang: '',
|
|
92
|
-
title: `${regulation.name}
|
|
96
|
+
title: `${regulation.name} ${clause.heading}`,
|
|
93
97
|
documentTitle: regulation.name,
|
|
94
98
|
summary: `제${version.version}판 · ${when}.`,
|
|
95
99
|
text: `제${version.version}판 · ${when}. ${clause.text}`,
|
|
@@ -107,5 +111,10 @@ function registerRegulationReaders() {
|
|
|
107
111
|
return false;
|
|
108
112
|
return !!(await (0, shell_1.getRepository)(regulation_1.RegulationProcedure).findOne({ where: { id: attachment.refBy, domain: { id: context.state.domain.id } } }));
|
|
109
113
|
});
|
|
114
|
+
(0, attachment_base_1.registerAttachmentReader)(regulation_service_1.REGULATION_ORIGINAL_REF_TYPE, async (attachment, context) => {
|
|
115
|
+
if (!attachment.refBy || !(await (0, exports.keepsRules)(context)))
|
|
116
|
+
return false;
|
|
117
|
+
return !!(await (0, shell_1.getRepository)(regulation_1.RegulationVersion).findOne({ where: { id: attachment.refBy, domain: { id: context.state.domain.id } } }));
|
|
118
|
+
});
|
|
110
119
|
}
|
|
111
120
|
//# sourceMappingURL=regulation-read.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regulation-read.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-read.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, In } from 'typeorm'\n\nimport { receiptsOf } from '@things-factory/announcement'\nimport { registerAttachmentReader } from '@things-factory/attachment-base'\nimport { registerHelpSource, type HelpPart } from '@things-factory/help'\nimport { getRepository, Refusal } from '@things-factory/shell'\n\nimport { holds, todayIn, workingEmployeeOf } from '../common/employee-reader'\nimport { Regulation, RegulationClause, RegulationProcedure, RegulationVersion, RegulationVersionStatus } from './regulation'\nimport { clauseChanges, clausesOf, periodOfVersion, standingOf } from './regulation-rules'\nimport { announcementsOfVersions, previousAdopted, proceduresOf, REGULATION_HELP_SOURCE, REGULATION_PROCEDURE_REF_TYPE } from './regulation-service'\nimport { RegulationVersionView, RegulationView } from './regulation-type'\n\n/*\n * Who reads a company rule (ADR-0187 decision 7), asked by every door - the list, one rule, its papers, the help's search:\n * an adopted version, past ones too, is read by the domain's employees; a version being written or in approval, the\n * procedure and its papers by the keepers of the rules (`regulation`) only. A partner reads none.\n */\n\n/** Whether the request keeps the rules. */\nexport const keepsRules = (context: any) => holds(context, 'regulation', 'query')\n\n/** Whether the request may read the adopted rules - an employee of the domain, or a keeper. */\nexport async function readsRules(context: any): Promise<boolean> {\n return !!(await workingEmployeeOf(context)) || (await keepsRules(context))\n}\n\n/** A version as the request sees it, or nothing when it may not. */\nexport async function viewOfVersion(tx: EntityManager | undefined, context: any, version: RegulationVersion, siblings: RegulationVersion[], keeper: boolean): Promise<RegulationVersionView | null> {\n const { domain, user } = context.state\n if (version.status !== RegulationVersionStatus.ADOPTED && !keeper) return null\n const today = todayIn(domain)\n const standing = standingOf(siblings, today)\n const adopted = siblings.filter(one => one.status === RegulationVersionStatus.ADOPTED && one.effectiveOn).sort((a, b) => (a.effectiveOn! < b.effectiveOn! ? -1 : 1))\n const next = adopted.find(one => one.effectiveOn! > (version.effectiveOn ?? '') && one.id !== version.id)\n const clauses =\n version.status === RegulationVersionStatus.ADOPTED\n ? await getRepository(RegulationClause, tx).find({ where: { version: { id: version.id } } as any, order: { rank: 'ASC' } as any })\n : (clausesOf(version.body).map((one, rank) => ({ id: `${version.id}:${rank}`, rank, versionId: version.id, ...one })) as any[])\n const before = await previousAdopted(getRepository(RegulationVersion, tx).manager, version)\n const changes = clauseChanges(before ? clausesOf(before.body) : [], clausesOf(version.body)).map(one => ({ ...one, title: one.title ?? undefined }))\n const announcement = version.announcementId ? (await announcementsOfVersions(getRepository(RegulationVersion, tx).manager, domain, [version.id])).get(version.id) : undefined\n const receipt = announcement ? (await receiptsOf([announcement.id], user.id, tx)).get(announcement.id) : undefined\n return {\n version,\n period: periodOfVersion(version, standing, today),\n endsOn: version.status === RegulationVersionStatus.ADOPTED ? next?.effectiveOn : undefined,\n clauses,\n changes,\n procedures: keeper ? ((await proceduresOf(getRepository(RegulationVersion, tx).manager, domain, [version.id])) as any) : undefined,\n announcement: keeper ? announcement : undefined,\n told: announcement?.status === 'PUBLISHED',\n readAt: receipt?.acknowledgedAt ?? undefined\n }\n}\n\n/** A rule as the request sees it - its versions, the one in force and the one due. */\nexport async function viewOfRegulation(tx: EntityManager | undefined, context: any, regulation: Regulation, keeper: boolean): Promise<RegulationView> {\n const today = todayIn(context.state.domain)\n const siblings = await getRepository(RegulationVersion, tx).find({ where: { regulation: { id: regulation.id } } as any, order: { version: 'DESC' } as any })\n const views = (await Promise.all(siblings.map(one => viewOfVersion(tx, context, one, siblings, keeper)))).filter(Boolean) as RegulationVersionView[]\n const standing = standingOf(siblings, today)\n return { regulation, inForce: views.find(one => one.version.id === standing.inForce?.id), due: views.find(one => one.version.id === standing.due?.id), versions: views }\n}\n\n/** The request may read the rules, or is refused - a partner is told so. */\nexport async function requireRuleReader(context: any): Promise<boolean> {\n const keeper = await keepsRules(context)\n if (!keeper && !(await workingEmployeeOf(context))) throw new Refusal('compliance-employees-only', {}, 'only an employee of this company reads its rules')\n return keeper\n}\n\n/** The help's parts of the rules: an article of each version in force or due is a part (ADR-0187 decision 12). */\nexport async function regulationParts(domain: { id: string; timezone?: string }): Promise<HelpPart[]> {\n const today = todayIn(domain)\n const regulations = await getRepository(Regulation).find({ where: { domain: { id: domain.id } } as any })\n if (!regulations.length) return []\n const versions = await getRepository(RegulationVersion).find({ where: { regulation: { id: In(regulations.map(one => one.id)) }, status: RegulationVersionStatus.ADOPTED } as any })\n const parts: HelpPart[] = []\n for (const regulation of regulations) {\n const { inForce, due } = standingOf(versions.filter(one => one.regulationId === regulation.id), today)\n for (const version of [inForce, due].filter(Boolean) as RegulationVersion[]) {\n const clauses = await getRepository(RegulationClause).find({ where: { version: { id: version.id } } as any, order: { rank: 'ASC' } as any })\n const when = version === due ? `${version.effectiveOn} 시행 예정` : `${version.effectiveOn} 시행`\n for (const clause of clauses)\n parts.push({\n topic: `${REGULATION_HELP_SOURCE}/${regulation.code}`,\n section: clause.number,\n lang: '',\n title: `${regulation.name} 제${clause.number}조${clause.title ? `(${clause.title})` : ''}`,\n documentTitle: regulation.name,\n summary: `제${version.version}판 · ${when}.`,\n text: `제${version.version}판 · ${when}. ${clause.text}`,\n link: `regulations?regulation=${encodeURIComponent(regulation.code)}&clause=${encodeURIComponent(clause.number)}`\n })\n }\n }\n return parts\n}\n\n/** The rules' articles in the help's search, and the papers of a procedure to its keepers only. */\nexport function registerRegulationReaders(): void {\n registerHelpSource({ name: REGULATION_HELP_SOURCE, partsOf: domain => regulationParts(domain as any), mayRead: readsRules })\n registerAttachmentReader(REGULATION_PROCEDURE_REF_TYPE, async (attachment, context) => {\n if (!attachment.refBy || !(await keepsRules(context))) return false\n return !!(await getRepository(RegulationProcedure).findOne({ where: { id: attachment.refBy, domain: { id: (context as any).state.domain.id } } as any }))\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regulation-read.js","sourceRoot":"","sources":["../../../server/service/regulation/regulation-read.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, In } from 'typeorm'\n\nimport { receiptsOf } from '@things-factory/announcement'\nimport { registerAttachmentReader } from '@things-factory/attachment-base'\nimport { registerHelpSource, type HelpPart } from '@things-factory/help'\nimport { getRepository, Refusal } from '@things-factory/shell'\n\nimport { holds, todayIn, workingEmployeeOf } from '../common/employee-reader'\nimport { Regulation, RegulationClause, RegulationProcedure, RegulationVersion, RegulationVersionStatus } from './regulation'\nimport { clauseChanges, clausesOf, partsOf, periodOfVersion, standingOf } from './regulation-rules'\nimport { announcementsOfVersions, originalsOf, previousAdopted, proceduresOf, REGULATION_HELP_SOURCE, REGULATION_ORIGINAL_REF_TYPE, REGULATION_PROCEDURE_REF_TYPE } from './regulation-service'\nimport { RegulationVersionView, RegulationView } from './regulation-type'\n\n/*\n * Who reads a company rule (ADR-0187 decision 7), asked by every door - the list, one rule, its papers, the help's search:\n * an adopted version, past ones too, is read by the domain's employees; a version being written or in approval, the\n * procedure and its papers by the keepers of the rules (`regulation`) only. A partner reads none.\n */\n\n/** Whether the request keeps the rules. */\nexport const keepsRules = (context: any) => holds(context, 'regulation', 'query')\n\n/** Whether the request may read the adopted rules - an employee of the domain, or a keeper. */\nexport async function readsRules(context: any): Promise<boolean> {\n return !!(await workingEmployeeOf(context)) || (await keepsRules(context))\n}\n\n/** A version as the request sees it, or nothing when it may not. */\nexport async function viewOfVersion(tx: EntityManager | undefined, context: any, version: RegulationVersion, siblings: RegulationVersion[], keeper: boolean): Promise<RegulationVersionView | null> {\n const { domain, user } = context.state\n if (version.status !== RegulationVersionStatus.ADOPTED && !keeper) return null\n const today = todayIn(domain)\n const standing = standingOf(siblings, today)\n const adopted = siblings.filter(one => one.status === RegulationVersionStatus.ADOPTED && one.effectiveOn).sort((a, b) => (a.effectiveOn! < b.effectiveOn! ? -1 : 1))\n const next = adopted.find(one => one.effectiveOn! > (version.effectiveOn ?? '') && one.id !== version.id)\n const parts = partsOf(version.body)\n const clauses =\n version.status === RegulationVersionStatus.ADOPTED\n ? await getRepository(RegulationClause, tx).find({ where: { version: { id: version.id } } as any, order: { rank: 'ASC' } as any })\n : (parts.clauses.map((one, rank) => ({ id: `${version.id}:${rank}`, rank, versionId: version.id, ...one })) as any[])\n const before = await previousAdopted(getRepository(RegulationVersion, tx).manager, version)\n const changes = clauseChanges(before ? clausesOf(before.body) : [], clausesOf(version.body)).map(one => ({ ...one, title: one.title ?? undefined }))\n const announcement = version.announcementId ? (await announcementsOfVersions(getRepository(RegulationVersion, tx).manager, domain, [version.id])).get(version.id) : undefined\n const receipt = announcement ? (await receiptsOf([announcement.id], user.id, tx)).get(announcement.id) : undefined\n return {\n version,\n period: periodOfVersion(version, standing, today),\n endsOn: version.status === RegulationVersionStatus.ADOPTED ? next?.effectiveOn : undefined,\n clauses,\n appendix: parts.appendix ?? undefined,\n text: parts.clauses.length ? undefined : version.body?.trim() || undefined,\n changes,\n originals: keeper && version.registeredInForce ? ((await originalsOf(getRepository(RegulationVersion, tx).manager, domain, [version.id])).get(version.id) ?? 0) : undefined,\n procedures: keeper ? ((await proceduresOf(getRepository(RegulationVersion, tx).manager, domain, [version.id])) as any) : undefined,\n announcement: keeper ? announcement : undefined,\n told: announcement?.status === 'PUBLISHED',\n readAt: receipt?.acknowledgedAt ?? undefined\n }\n}\n\n/** A rule as the request sees it - its versions, the one in force and the one due. */\nexport async function viewOfRegulation(tx: EntityManager | undefined, context: any, regulation: Regulation, keeper: boolean): Promise<RegulationView> {\n const today = todayIn(context.state.domain)\n const siblings = await getRepository(RegulationVersion, tx).find({ where: { regulation: { id: regulation.id } } as any, order: { version: 'DESC' } as any })\n const views = (await Promise.all(siblings.map(one => viewOfVersion(tx, context, one, siblings, keeper)))).filter(Boolean) as RegulationVersionView[]\n const standing = standingOf(siblings, today)\n return { regulation, inForce: views.find(one => one.version.id === standing.inForce?.id), due: views.find(one => one.version.id === standing.due?.id), versions: views }\n}\n\n/** The request may read the rules, or is refused - a partner is told so. */\nexport async function requireRuleReader(context: any): Promise<boolean> {\n const keeper = await keepsRules(context)\n if (!keeper && !(await workingEmployeeOf(context))) throw new Refusal('compliance-employees-only', {}, 'only an employee of this company reads its rules')\n return keeper\n}\n\n/** The help's parts of the rules: an article of each version in force or due is a part (ADR-0187 decision 12). */\nexport async function regulationParts(domain: { id: string; timezone?: string }): Promise<HelpPart[]> {\n const today = todayIn(domain)\n const regulations = await getRepository(Regulation).find({ where: { domain: { id: domain.id } } as any })\n if (!regulations.length) return []\n const versions = await getRepository(RegulationVersion).find({ where: { regulation: { id: In(regulations.map(one => one.id)) }, status: RegulationVersionStatus.ADOPTED } as any })\n const parts: HelpPart[] = []\n for (const regulation of regulations) {\n const { inForce, due } = standingOf(versions.filter(one => one.regulationId === regulation.id), today)\n for (const version of [inForce, due].filter(Boolean) as RegulationVersion[]) {\n const clauses = await getRepository(RegulationClause).find({ where: { version: { id: version.id } } as any, order: { rank: 'ASC' } as any })\n const when = version === due ? `${version.effectiveOn} 시행 예정` : `${version.effectiveOn} 시행`\n for (const clause of clauses)\n parts.push({\n topic: `${REGULATION_HELP_SOURCE}/${regulation.code}`,\n section: clause.number,\n lang: '',\n title: `${regulation.name} ${clause.heading}`,\n documentTitle: regulation.name,\n summary: `제${version.version}판 · ${when}.`,\n text: `제${version.version}판 · ${when}. ${clause.text}`,\n link: `regulations?regulation=${encodeURIComponent(regulation.code)}&clause=${encodeURIComponent(clause.number)}`\n })\n }\n }\n return parts\n}\n\n/** The rules' articles in the help's search, and the papers of a procedure to its keepers only. */\nexport function registerRegulationReaders(): void {\n registerHelpSource({ name: REGULATION_HELP_SOURCE, partsOf: domain => regulationParts(domain as any), mayRead: readsRules })\n registerAttachmentReader(REGULATION_PROCEDURE_REF_TYPE, async (attachment, context) => {\n if (!attachment.refBy || !(await keepsRules(context))) return false\n return !!(await getRepository(RegulationProcedure).findOne({ where: { id: attachment.refBy, domain: { id: (context as any).state.domain.id } } as any }))\n })\n registerAttachmentReader(REGULATION_ORIGINAL_REF_TYPE, async (attachment, context) => {\n if (!attachment.refBy || !(await keepsRules(context))) return false\n return !!(await getRepository(RegulationVersion).findOne({ where: { id: attachment.refBy, domain: { id: (context as any).state.domain.id } } as any }))\n })\n}\n"]}
|
|
@@ -11,16 +11,25 @@ export interface Clause {
|
|
|
11
11
|
number: string;
|
|
12
12
|
title: string | null;
|
|
13
13
|
chapter: string | null;
|
|
14
|
+
heading: string;
|
|
14
15
|
text: string;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
18
|
+
* The parts of a text (ADR-0187 decision 2): its articles, each from its `제n조(제목)` head up to the next article or
|
|
19
|
+
* head, and the appendix - from the first line headed in brackets (`[별표 1]`) to the end. The words before the first
|
|
20
|
+
* article are no article. A chapter (`제2장 근로시간`) and a section (`제1절 근로시간`) are kept as the chapter of the
|
|
21
|
+
* articles after them. The articles after 「부칙」 are numbered `부칙1`, `부칙2` - apart from the body's.
|
|
19
22
|
*/
|
|
20
|
-
export declare function
|
|
23
|
+
export declare function partsOf(body: string | null | undefined): {
|
|
24
|
+
clauses: Clause[];
|
|
25
|
+
appendix: string | null;
|
|
26
|
+
};
|
|
27
|
+
/** The articles of a text. */
|
|
28
|
+
export declare const clausesOf: (body: string | null | undefined) => Clause[];
|
|
21
29
|
export interface ClauseChange {
|
|
22
30
|
number: string;
|
|
23
31
|
title: string | null;
|
|
32
|
+
heading: string;
|
|
24
33
|
change: 'ADDED' | 'CHANGED' | 'REMOVED';
|
|
25
34
|
}
|
|
26
35
|
/** What a version changed of the one before, article by article - by number; a heading or words that differ is a change. */
|
|
@@ -28,6 +37,7 @@ export declare function clauseChanges(before: Clause[], after: Clause[]): Clause
|
|
|
28
37
|
export interface ProcedureFacts {
|
|
29
38
|
kind: string;
|
|
30
39
|
day?: string | null;
|
|
40
|
+
method?: string | null;
|
|
31
41
|
workersCount?: number | null;
|
|
32
42
|
consentCount?: number | null;
|
|
33
43
|
files: number;
|
|
@@ -45,11 +55,20 @@ export declare function regulationRefusal(input: {
|
|
|
45
55
|
kind?: string | null;
|
|
46
56
|
}): Refusal | null;
|
|
47
57
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* them, the consent of more than half with its papers.
|
|
58
|
+
* Only working-condition rules require the statutory procedure evidence. Other rules follow company approval.
|
|
59
|
+
* The original evidence is reviewed by the approver; this function does not certify its legal validity.
|
|
51
60
|
*/
|
|
52
61
|
export declare function adoptionRefusal(version: VersionFacts, procedures: ProcedureFacts[], today: string): Refusal | null;
|
|
62
|
+
/**
|
|
63
|
+
* What a version asks before it is registered as in force already (ADR-0187 decision 3, amendment 2): the first version
|
|
64
|
+
* of its rule to be adopted, still being written, with a text, a day come by today and the original attached. No article
|
|
65
|
+
* is asked - a table of amounts has none; no procedure is asked - it was taken before the system.
|
|
66
|
+
*/
|
|
67
|
+
export declare function inForceRefusal(version: {
|
|
68
|
+
status: string;
|
|
69
|
+
body?: string | null;
|
|
70
|
+
effectiveOn?: string | null;
|
|
71
|
+
}, adoptedBefore: number, originals: number, today: string): Refusal | null;
|
|
53
72
|
/** What a procedure record asks before it is written. */
|
|
54
73
|
export declare function procedureRefusal(input: {
|
|
55
74
|
kind?: string | null;
|