diff --git a/.github/workflows/_validate.yml b/.github/workflows/_validate.yml index 638daf98..a7c95325 100644 --- a/.github/workflows/_validate.yml +++ b/.github/workflows/_validate.yml @@ -99,6 +99,8 @@ jobs: - name: Initialize Terraform CDK configuration shell: bash working-directory: infra/cdktf + env: + NODE_OPTIONS: --max-old-space-size=4096 run: | pnpm cdktf get pnpm build:tsc diff --git a/e2e/package.json b/e2e/package.json index b041e75d..82e617e2 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "auth": "pnpm --filter=@flexion/forms-cli cli e2e create-test-session -p ../../packages/server/src/main.db -o ../../e2e/.env", + "clean": "rimraf coverage test-results playwright-report", "dev": "tsc -w", "test:e2e:ci": "pnpm auth && pnpm playwright test --headed", "test:e2e:dev": "pnpm auth && pnpm playwright test --ui-port=8080 --ui-host=0.0.0.0" diff --git a/infra/aws-cdk/package.json b/infra/aws-cdk/package.json index 160cd385..f156ff31 100644 --- a/infra/aws-cdk/package.json +++ b/infra/aws-cdk/package.json @@ -22,6 +22,7 @@ "build:typescript": "tsc", "build:synth": "cdk synth", "cdk": "cdk", + "clean": "rimraf dist cdk.out tsconfig.tsbuildinfo coverage", "test": "echo 'no tests'", "watch": "tsc -w" }, diff --git a/packages/design/package.json b/packages/design/package.json index 223ddd2f..0386b52a 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -25,7 +25,7 @@ "build:storybook": "storybook build", "build:styles": "gulp update", "clean": "pnpm clean:lib && pnpm clean:styles", - "clean:lib": "rimraf dist", + "clean:lib": "rimraf dist tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo coverage storybook-static", "clean:styles": "rimraf static", "dev": "run-p dev:*", "dev:lib": "vite", diff --git a/packages/forms/src/blueprint.ts b/packages/forms/src/blueprint.ts index 5de67c96..d2d7182b 100644 --- a/packages/forms/src/blueprint.ts +++ b/packages/forms/src/blueprint.ts @@ -6,7 +6,7 @@ import { generatePatternId, getPatternMap, removeChildPattern, -} from './pattern'; +} from './pattern.js'; import { type FieldsetPattern, type FormSummaryPattern, @@ -14,8 +14,8 @@ import { type PageSetPattern, type RepeaterPattern, type SequencePattern, -} from './patterns'; -import { type Blueprint, type FormOutput, type FormSummary } from './types'; +} from './patterns/index.js'; +import { type Blueprint, type FormOutput, type FormSummary } from './types.js'; export const nullBlueprint: Blueprint = { summary: { diff --git a/packages/forms/src/builder/parse-form.ts b/packages/forms/src/builder/parse-form.ts index df0c497a..96a300d9 100644 --- a/packages/forms/src/builder/parse-form.ts +++ b/packages/forms/src/builder/parse-form.ts @@ -1,8 +1,8 @@ import * as z from 'zod'; import { failure, success, type Result } from '@flexion/forms-common'; -import type { FormConfig } from '../pattern'; -import type { Blueprint } from '../types'; +import type { FormConfig } from '../pattern.js'; +import type { Blueprint } from '../types.js'; /** * Parses and validates an object against a form schema defined by the given configuration. diff --git a/packages/forms/src/pattern.ts b/packages/forms/src/pattern.ts index 319b909c..606ee8f3 100644 --- a/packages/forms/src/pattern.ts +++ b/packages/forms/src/pattern.ts @@ -1,5 +1,4 @@ import * as r from '@flexion/forms-common'; -import set from 'set-value'; import { type CreatePrompt } from './components.js'; import { type FormError, type FormErrors } from './error.js'; @@ -249,6 +248,9 @@ export const getFirstPattern = ( ): Pattern => { if (!pattern) { pattern = form.patterns[form.root]; + if (!pattern) { + throw new Error(`Root pattern with id ${form.root} not found`); + } } const elemConfig = getPatternConfig(config, pattern.type); const children = elemConfig.getChildren(pattern, form.patterns); diff --git a/packages/forms/src/patterns/attachment/config.ts b/packages/forms/src/patterns/attachment/config.ts index 2d8486ad..29d61401 100644 --- a/packages/forms/src/patterns/attachment/config.ts +++ b/packages/forms/src/patterns/attachment/config.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; import { enLocale as message } from '@flexion/forms-common'; import { ParsePatternConfigData, type Pattern } from '../../pattern.js'; import { safeZodParseFormErrors } from '../../util/zod.js'; -import { attachmentFileTypeMimes } from './file-type-options'; +import { attachmentFileTypeMimes } from './file-type-options.js'; export type AttachmentPattern = Pattern; diff --git a/packages/forms/src/patterns/attachment/index.ts b/packages/forms/src/patterns/attachment/index.ts index 70d122e4..f1c887b6 100644 --- a/packages/forms/src/patterns/attachment/index.ts +++ b/packages/forms/src/patterns/attachment/index.ts @@ -5,7 +5,7 @@ import { type PatternConfig } from '../../pattern.js'; import { parseConfigData, type AttachmentPattern } from './config.js'; import { createPrompt } from './prompt.js'; import { type AttachmentPatternOutput, parseUserInput } from './response.js'; -import { attachmentFileTypeMimes } from './file-type-options'; +import { attachmentFileTypeMimes } from './file-type-options.js'; export const attachmentConfig: PatternConfig< AttachmentPattern, diff --git a/packages/forms/src/patterns/name/name.test.ts b/packages/forms/src/patterns/name/name.test.ts index 75ac92d2..856c62e2 100644 --- a/packages/forms/src/patterns/name/name.test.ts +++ b/packages/forms/src/patterns/name/name.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { createNameSchema, nameConfig, type NamePattern } from './index'; +import { createNameSchema, nameConfig, type NamePattern } from './index.js'; describe('NamePattern tests', () => { describe('createNameSchema', () => { diff --git a/packages/forms/src/patterns/package-download/submit.ts b/packages/forms/src/patterns/package-download/submit.ts index d17800f6..2db6040f 100644 --- a/packages/forms/src/patterns/package-download/submit.ts +++ b/packages/forms/src/patterns/package-download/submit.ts @@ -1,11 +1,11 @@ import { failure, success, type Result } from '@flexion/forms-common'; -import { type Blueprint, type FormOutput } from '../..'; -import { createFormOutputFieldData, fillPDF } from '../../documents'; -import { sessionIsComplete } from '../../session'; -import { type SubmitHandler } from '../../submission'; +import { type FormOutput } from '../../index.js'; +import { createFormOutputFieldData, fillPDF } from '../../documents/index.js'; +import { sessionIsComplete } from '../../session.js'; +import { type SubmitHandler } from '../../submission.js'; -import { type PackageDownloadPattern } from './index'; +import { type PackageDownloadPattern } from './index.js'; export const downloadPackageHandler: SubmitHandler< PackageDownloadPattern diff --git a/packages/forms/src/patterns/page-set/submit.ts b/packages/forms/src/patterns/page-set/submit.ts index 15456adc..dad1eb6d 100644 --- a/packages/forms/src/patterns/page-set/submit.ts +++ b/packages/forms/src/patterns/page-set/submit.ts @@ -5,10 +5,10 @@ import { getPatternSafely, aggregatePatternSessionValues, } from '../../pattern.js'; -import { type FormSession } from '../../session'; -import { type SubmitHandler } from '../../submission'; -import { type PagePattern } from '../page/config'; -import { type PageSetPattern } from './config'; +import { type FormSession } from '../../session.js'; +import { type SubmitHandler } from '../../submission.js'; +import { type PagePattern } from '../page/config.js'; +import { type PageSetPattern } from './config.js'; const getPage = (formSession: FormSession) => { const page = formSession.route?.params.page?.toString(); diff --git a/packages/forms/src/patterns/repeater/submit.ts b/packages/forms/src/patterns/repeater/submit.ts index b28c7b0e..18fd875a 100644 --- a/packages/forms/src/patterns/repeater/submit.ts +++ b/packages/forms/src/patterns/repeater/submit.ts @@ -1,7 +1,7 @@ import { success } from '@flexion/forms-common'; -import { type RepeaterPattern } from '../..'; -import { type SubmitHandler } from '../../submission'; +import { type RepeaterPattern } from '../../index.js'; +import { type SubmitHandler } from '../../submission.js'; export const repeaterAddRowHandler: SubmitHandler = async ( context, @@ -15,7 +15,7 @@ export const repeaterAddRowHandler: SubmitHandler = async ( : []; const initialRepeaterRowData = opts.pattern.data.patterns.reduce( - (acc, patternId: string) => { + (acc, patternId) => { // THIS requires all the patterns to have object not string input values // acc[patternId] = {}; diff --git a/packages/forms/src/repository/add-document.ts b/packages/forms/src/repository/add-document.ts index ec1af5ec..b7ad6849 100644 --- a/packages/forms/src/repository/add-document.ts +++ b/packages/forms/src/repository/add-document.ts @@ -1,8 +1,8 @@ import { type Result, failure, success } from '@flexion/forms-common'; -import type { ParsedPdf } from '../documents/pdf/parsing-api'; -import type { DocumentFieldMap } from '../documents/types'; -import type { FormRepositoryContext } from '.'; +import type { ParsedPdf } from '../documents/pdf/parsing-api.js'; +import type { DocumentFieldMap } from '../documents/types.js'; +import type { FormRepositoryContext } from './index.js'; export type AddDocument = ( ctx: FormRepositoryContext, diff --git a/packages/forms/src/repository/delete-form.ts b/packages/forms/src/repository/delete-form.ts index eb20b114..a28243ab 100644 --- a/packages/forms/src/repository/delete-form.ts +++ b/packages/forms/src/repository/delete-form.ts @@ -1,7 +1,7 @@ import { type VoidResult, failure, voidSuccess } from '@flexion/forms-common'; -import type { FormOutput } from '../types'; -import type { FormRepositoryContext } from '.'; +import type { FormOutput } from '../types.js'; +import type { FormRepositoryContext } from './index.js'; export type DeleteForm = ( ctx: FormRepositoryContext, @@ -39,7 +39,7 @@ export const deleteForm: DeleteForm = async (ctx, formId) => { .where('id', 'in', documentIds) .execute() .then(_ => voidSuccess) - .catch((error: Error) => { + .catch(error => { return failure({ message: error.message, code: 'unknown' as const }); }); }); diff --git a/packages/forms/src/repository/get-document.ts b/packages/forms/src/repository/get-document.ts index 63d199c8..f614ae9f 100644 --- a/packages/forms/src/repository/get-document.ts +++ b/packages/forms/src/repository/get-document.ts @@ -1,8 +1,8 @@ import { type Result, failure, success } from '@flexion/forms-common'; -import type { ParsedPdf } from '../documents/pdf/parsing-api'; -import type { DocumentFieldMap } from '../documents/types'; -import type { FormRepositoryContext } from '.'; +import type { ParsedPdf } from '../documents/pdf/parsing-api.js'; +import type { DocumentFieldMap } from '../documents/types.js'; +import type { FormRepositoryContext } from './index.js'; export type GetDocument = ( ctx: FormRepositoryContext, diff --git a/packages/forms/src/repository/get-form-list.ts b/packages/forms/src/repository/get-form-list.ts index 4f7d1aa5..fa95d2a4 100644 --- a/packages/forms/src/repository/get-form-list.ts +++ b/packages/forms/src/repository/get-form-list.ts @@ -1,4 +1,4 @@ -import type { FormRepositoryContext } from '.'; +import type { FormRepositoryContext } from './index.js'; import type { JobStatus } from './jobs/types.js'; export type FormListItem = { diff --git a/packages/forms/src/repository/get-form-session.ts b/packages/forms/src/repository/get-form-session.ts index b36693ba..a2dfef39 100644 --- a/packages/forms/src/repository/get-form-session.ts +++ b/packages/forms/src/repository/get-form-session.ts @@ -1,6 +1,6 @@ import { type Result, failure, success } from '@flexion/forms-common'; -import { type FormSession, type FormSessionId } from '../session'; -import type { FormRepositoryContext } from '.'; +import { type FormSession, type FormSessionId } from '../session.js'; +import type { FormRepositoryContext } from './index.js'; export type GetFormSession = ( ctx: FormRepositoryContext, diff --git a/packages/forms/src/repository/upsert-form-session.ts b/packages/forms/src/repository/upsert-form-session.ts index a99fe292..76930205 100644 --- a/packages/forms/src/repository/upsert-form-session.ts +++ b/packages/forms/src/repository/upsert-form-session.ts @@ -1,6 +1,6 @@ import { type Result, failure, success } from '@flexion/forms-common'; -import { type FormSession } from '../session'; -import type { FormRepositoryContext } from '.'; +import { type FormSession } from '../session.js'; +import type { FormRepositoryContext } from './index.js'; export type UpsertFormSession = ( ctx: FormRepositoryContext, diff --git a/packages/forms/src/services/submit-form.ts b/packages/forms/src/services/submit-form.ts index 8724ae0c..009a2cd5 100644 --- a/packages/forms/src/services/submit-form.ts +++ b/packages/forms/src/services/submit-form.ts @@ -1,14 +1,14 @@ import { failure, success, type Result } from '@flexion/forms-common'; import { type FormServiceContext } from '../context/index.js'; -import { submitPage } from '../patterns/page-set/submit'; -import { downloadPackageHandler } from '../patterns/package-download/submit'; +import { submitPage } from '../patterns/page-set/submit.js'; +import { downloadPackageHandler } from '../patterns/package-download/submit.js'; import { repeaterAddRowHandler, repeaterDeleteRowHandler, -} from '../patterns/repeater/submit'; +} from '../patterns/repeater/submit.js'; import { type FormRoute } from '../route-data.js'; -import { SubmissionRegistry } from '../submission'; +import { SubmissionRegistry } from '../submission.js'; import { createFormSession, type FormSession, diff --git a/packages/forms/src/submission.ts b/packages/forms/src/submission.ts index 8a839222..1a81f2f5 100644 --- a/packages/forms/src/submission.ts +++ b/packages/forms/src/submission.ts @@ -7,9 +7,9 @@ import { type Pattern, type PatternId, getPattern, -} from './pattern'; -import { type FormSession } from './session'; -import { type Blueprint, type DocumentFieldMap } from '.'; +} from './pattern.js'; +import { type FormSession } from './session.js'; +import { type Blueprint, type DocumentFieldMap } from './index.js'; export type SubmitHandlerContext = { config: FormConfig; diff --git a/packages/forms/src/types.ts b/packages/forms/src/types.ts index d27d6bc9..1a06bdcc 100644 --- a/packages/forms/src/types.ts +++ b/packages/forms/src/types.ts @@ -1,5 +1,5 @@ -import { type DocumentFieldMap } from './documents/types'; -import { type PatternId, type PatternMap } from './pattern'; +import { type DocumentFieldMap } from './documents/types.js'; +import { type PatternId, type PatternMap } from './pattern.js'; export type Blueprint = { summary: FormSummary;