@@ -331,6 +331,194 @@ const zuoraSalesforceLinkRemover: HandlerDefinition = {
331331 } ,
332332} ;
333333
334+ const srcOnly = {
335+ lint : "eslint --cache --cache-location /tmp/eslintcache/ 'src/**/*.ts'" ,
336+ test : 'jest --group=-integration --passWithNoTests' ,
337+ } ;
338+
339+ const moduleAws : ModuleDefinition = {
340+ name : 'aws' ,
341+ dependencies : {
342+ ...dep [ '@aws-sdk/client-cloudwatch' ] ,
343+ ...dep [ '@aws-sdk/client-lambda' ] ,
344+ ...dep [ '@aws-sdk/client-s3' ] ,
345+ ...dep [ '@aws-sdk/client-sqs' ] ,
346+ ...dep [ '@aws-sdk/client-ssm' ] ,
347+ ...dep [ '@aws-sdk/credential-provider-node' ] ,
348+ ...dep [ '@aws-sdk/lib-storage' ] ,
349+ ...dep . zod ,
350+ } ,
351+ } ;
352+
353+ const moduleBigquery : ModuleDefinition = {
354+ name : 'bigquery' ,
355+ dependencies : {
356+ ...dep [ '@aws-sdk/client-s3' ] ,
357+ ...dep [ '@google-cloud/bigquery' ] ,
358+ ...deprecatedDeps [ 'aws-sdk' ] ,
359+ ...dep [ 'google-auth-library' ] ,
360+ ...dep . zod ,
361+ } ,
362+ devDependencies : {
363+ ...devDeps [ '@types/jest' ] ,
364+ ...devDeps [ 'jest' ] ,
365+ ...devDeps [ 'ts-jest' ] ,
366+ } ,
367+ } ;
368+
369+ const moduleEmail : ModuleDefinition = {
370+ name : 'email' ,
371+ dependencies : {
372+ ...dep [ '@aws-sdk/client-sqs' ] ,
373+ } ,
374+ } ;
375+
376+ const moduleIdentity : ModuleDefinition = {
377+ name : 'identity' ,
378+ dependencies : {
379+ ...dep [ '@okta/jwt-verifier' ] ,
380+ ...dep [ 'zod' ] ,
381+ } ,
382+ devDependencies : {
383+ ...devDeps [ '@types/aws-lambda' ] ,
384+ } ,
385+ } ;
386+
387+ const moduleInternationalisation : ModuleDefinition = {
388+ name : 'internationalisation' ,
389+ dependencies : {
390+ ...dep [ 'zod' ] ,
391+ } ,
392+ extraScripts : srcOnly ,
393+ } ;
394+
395+ const moduleProductBenefits : ModuleDefinition = {
396+ name : 'product-benefits' ,
397+ dependencies : {
398+ ...dep [ 'zod' ] ,
399+ ...dep [ 'dayjs' ] ,
400+ } ,
401+ } ;
402+
403+ const moduleProductCatalog : ModuleDefinition = {
404+ name : 'product-catalog' ,
405+ devDependencies : {
406+ ...devDeps [ 'tsx' ] ,
407+ ...devDeps [ 'tsconfig-paths' ] ,
408+ ...dep [ 'zod' ] ,
409+ ...devDeps [ 'eslint-plugin-sort-keys-fix' ] ,
410+ ...devDeps [ 'typescript' ] ,
411+ } ,
412+ extraScripts : {
413+ generateFiles :
414+ 'tsx -r tsconfig-paths/register --project ../../tsconfig.json src/generateSchemaCommand.ts' ,
415+ validateSchema :
416+ 'prettier --write src/productCatalogSchema.ts && pnpm run sortSchemaKeys' ,
417+ sortSchemaKeys :
418+ 'for i in {1..3}; do eslint --fix src/productCatalogSchema.ts; done' ,
419+ validateBillingPeriods :
420+ 'prettier --write src/productBillingPeriods.ts && pnpm run sortBillingPeriodKeys' ,
421+ sortBillingPeriodKeys :
422+ 'for i in {1..2}; do eslint --fix src/productBillingPeriods.ts; done' ,
423+ validateProductPurchaseSchema :
424+ 'prettier --write src/productPurchaseSchema.ts && pnpm run sortProductPurchaseKeys' ,
425+ sortProductPurchaseKeys :
426+ 'for i in {1..2}; do eslint --fix src/productPurchaseSchema.ts; done' ,
427+ validateSchemas :
428+ 'pnpm run validateSchema && pnpm run validateBillingPeriods && pnpm run validateProductPurchaseSchema' ,
429+ buildGeneratedFiles :
430+ 'tsc --noEmit --skipLibCheck --project tsconfig-for-generated-files.json' ,
431+ generateSchema :
432+ 'pnpm run generateFiles && pnpm run validateSchemas && pnpm run buildGeneratedFiles' ,
433+ updateSnapshots : 'jest -u --group=-integration' ,
434+ } ,
435+ } ;
436+
437+ const modulePromotions : ModuleDefinition = {
438+ name : 'promotions' ,
439+ dependencies : {
440+ ...dep [ '@aws-sdk/client-dynamodb' ] ,
441+ ...dep [ '@aws-sdk/util-dynamodb' ] ,
442+ ...dep [ 'zod' ] ,
443+ } ,
444+ } ;
445+
446+ const moduleRouting : ModuleDefinition = {
447+ name : 'routing' ,
448+ dependencies : {
449+ ...dep [ 'zod' ] ,
450+ } ,
451+ devDependencies : {
452+ ...devDeps [ '@types/aws-lambda' ] ,
453+ } ,
454+ } ;
455+
456+ const moduleSalesforce : ModuleDefinition = {
457+ name : 'salesforce' ,
458+ dependencies : {
459+ ...dep [ 'zod' ] ,
460+ } ,
461+ devDependencies : {
462+ ...devDeps [ '@types/jest' ] ,
463+ ...devDeps [ 'jest' ] ,
464+ ...devDeps [ 'ts-jest' ] ,
465+ } ,
466+ } ;
467+
468+ const moduleSecretsManager : ModuleDefinition = {
469+ name : 'secrets-manager' ,
470+ dependencies : {
471+ ...dep [ '@aws-sdk/client-secrets-manager' ] ,
472+ ...devDeps [ 'aws-sdk-client-mock' ] ,
473+ } ,
474+ } ;
475+
476+ const moduleSupporterProductData : ModuleDefinition = {
477+ name : 'supporter-product-data' ,
478+ devDependencies : {
479+ ...dep [ '@aws-sdk/client-dynamodb' ] ,
480+ ...dep [ '@aws-sdk/util-dynamodb' ] ,
481+ } ,
482+ extraScripts : {
483+ test : 'NODE_OPTIONS="$NODE_OPTIONS --experimental-vm-modules" jest --group=-integration' ,
484+ } ,
485+ } ;
486+
487+ const moduleSyncSupporterProductData : ModuleDefinition = {
488+ name : 'sync-supporter-product-data' ,
489+ dependencies : {
490+ ...dep [ 'zod' ] ,
491+ } ,
492+ devDependencies : {
493+ ...dep [ '@aws-sdk/client-sqs' ] ,
494+ ...dep [ 'dayjs' ] ,
495+ ...devDeps [ 'tsx' ] ,
496+ } ,
497+ extraScripts : {
498+ ...srcOnly ,
499+ 'sync-user' : 'tsx ./src/syncUser.ts' ,
500+ } ,
501+ } ;
502+
503+ const moduleTestUsers : ModuleDefinition = {
504+ name : 'test-users' ,
505+ devDependencies : {
506+ ...dep [ 'dayjs' ] ,
507+ ...devDeps [ 'tsx' ] ,
508+ ...devDeps [ 'tsconfig-paths' ] ,
509+ } ,
510+ extraScripts : {
511+ ...srcOnly ,
512+ createDigitalSubscription : 'tsx ./src/createDigitalSubscription.ts' ,
513+ createAnnualContribution : 'tsx ./src/createAnnualContribution.ts' ,
514+ createMonthlyContribution : 'tsx ./src/createMonthlyContribution.ts' ,
515+ updateMonthlyContributionAmount :
516+ 'tsx ./src/updateMonthlyContributionAmount.ts' ,
517+ cancelSubscription : 'tsx ./src/cancel.ts' ,
518+ deleteAccount : 'tsx ./src/deleteAccount.ts' ,
519+ } ,
520+ } ;
521+
334522const moduleZuora : ModuleDefinition = {
335523 name : 'zuora' ,
336524 dependencies : {
@@ -341,6 +529,17 @@ const moduleZuora: ModuleDefinition = {
341529 } ,
342530} ;
343531
532+ const moduleZuoraCatalog : ModuleDefinition = {
533+ name : 'zuora-catalog' ,
534+ dependencies : {
535+ ...dep [ '@aws-sdk/client-s3' ] ,
536+ ...dep [ 'zod' ] ,
537+ } ,
538+ extraScripts : {
539+ 'update-catalog-fixtures' : 'bash runManual/updateCatalogFixtures.sh' ,
540+ } ,
541+ } ;
542+
344543export const build : BuildDefinition = {
345544 handlers : [
346545 alarmsHandler ,
@@ -364,5 +563,23 @@ export const build: BuildDefinition = {
364563 writeOffUnpaidInvoices ,
365564 zuoraSalesforceLinkRemover ,
366565 ] ,
367- modules : [ moduleZuora ] ,
566+
567+ modules : [
568+ moduleAws ,
569+ moduleBigquery ,
570+ moduleEmail ,
571+ moduleIdentity ,
572+ moduleInternationalisation ,
573+ moduleProductBenefits ,
574+ moduleProductCatalog ,
575+ modulePromotions ,
576+ moduleRouting ,
577+ moduleSalesforce ,
578+ moduleSecretsManager ,
579+ moduleSupporterProductData ,
580+ moduleSyncSupporterProductData ,
581+ moduleTestUsers ,
582+ moduleZuora ,
583+ moduleZuoraCatalog ,
584+ ] ,
368585} ;
0 commit comments