@sprucelabs/spruce-cli 14.27.0 → 14.28.3
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/CHANGELOG.md +35 -0
- package/build/.spruce/events/events.contract.d.ts +4 -621
- package/build/.spruce/events/events.contract.js +1 -35
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +0 -15
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +2 -17
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +4 -21
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +7 -24
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +1 -24
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +5 -28
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.d.ts +12 -0
- package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js +13 -1
- package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/schemas/schemas.types.d.ts +54 -1142
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js +1 -1
- package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
- package/build/.spruce/settings.json +6 -0
- package/build/__tests__/behavioral/UpgradingANodeModule.test.d.ts +1 -0
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js +50 -3
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +6 -6
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +2 -2
- package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
- package/build/features/event/actions/ListenAction.js +66 -54
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.js +24 -13
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/node/NodeFeature.d.ts +1 -0
- package/build/features/node/NodeFeature.js +83 -64
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js +20 -9
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/node/writers/NodeWriter.d.ts +5 -2
- package/build/features/node/writers/NodeWriter.js +37 -22
- package/build/features/node/writers/NodeWriter.js.map +1 -1
- package/build/features/sandbox/actions/SetupAction.js +1 -1
- package/build/features/sandbox/actions/SetupAction.js.map +1 -1
- package/build/features/skill/updaters/Updater.js +3 -1
- package/build/features/skill/updaters/Updater.js.map +1 -1
- package/build/schemas/v2020_07_22/listenEventOptions.builder.d.ts +1 -1
- package/build/schemas/v2020_07_22/listenEventOptions.builder.js +1 -1
- package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.d.ts +1 -0
- package/build/tests/utilities/uiAssert.utility.js +34 -0
- package/build/tests/utilities/uiAssert.utility.js.map +1 -1
- package/build/writers/AbstractWriter.d.ts +10 -10
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +30 -30
- package/src/.spruce/events/events.contract.ts +0 -102
- package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +0 -15
- package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +4 -21
- package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +1 -24
- package/src/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.ts +15 -0
- package/src/.spruce/schemas/schemas.types.ts +59 -1413
- package/src/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.ts +1 -1
- package/src/.spruce/settings.json +6 -0
- package/src/__tests__/behavioral/UpgradingANodeModule.test.ts +24 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +6 -6
- package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +2 -2
- package/src/features/event/actions/ListenAction.ts +30 -20
- package/src/features/event/stores/EventStore.ts +7 -1
- package/src/features/node/NodeFeature.ts +31 -25
- package/src/features/node/actions/UpgradeAction.ts +8 -1
- package/src/features/node/writers/NodeWriter.ts +38 -23
- package/src/features/sandbox/actions/SetupAction.ts +1 -1
- package/src/features/skill/updaters/Updater.ts +2 -1
- package/src/schemas/v2020_07_22/listenEventOptions.builder.ts +1 -1
- package/src/tests/utilities/uiAssert.utility.ts +16 -0
- package/src/writers/AbstractWriter.ts +15 -10
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +0 -10
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +0 -24
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +0 -1
- package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.d.ts +0 -11
- package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.js +0 -27
- package/build/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.js.map +0 -1
- package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.d.ts +0 -10
- package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.js +0 -24
- package/build/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.js.map +0 -1
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +0 -46
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +0 -62
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +0 -46
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +0 -62
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +0 -46
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +0 -62
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +0 -46
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +0 -62
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.d.ts +0 -10
- package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.js +0 -24
- package/build/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +0 -40
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +0 -56
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +0 -45
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +0 -59
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +0 -80
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +0 -94
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.d.ts +0 -11
- package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.js +0 -27
- package/build/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.js.map +0 -1
- package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
- package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.js +0 -48
- package/build/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.js.map +0 -1
- package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
- package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.js +0 -48
- package/build/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.js.map +0 -1
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +0 -48
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +0 -1
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +0 -48
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +0 -1
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +0 -38
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +0 -48
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +0 -1
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +0 -3
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +0 -28
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +0 -1
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +0 -36
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +0 -3
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +0 -28
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +0 -1
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +0 -56
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.js +0 -36
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.js +0 -35
- package/build/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.d.ts +0 -3
- package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.js +0 -54
- package/build/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.js.map +0 -1
- package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.js +0 -37
- package/build/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.js +0 -66
- package/build/.spruce/schemas/forms/v2021_07_02/builtForm.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.js +0 -50
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.js +0 -59
- package/build/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.js +0 -30
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.js +0 -34
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.js +0 -30
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.js +0 -33
- package/build/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.js +0 -52
- package/build/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.js +0 -44
- package/build/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.js +0 -29
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.js +0 -29
- package/build/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.js +0 -29
- package/build/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.js +0 -29
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.js +0 -78
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.js +0 -35
- package/build/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.js +0 -37
- package/build/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.js +0 -51
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.js +0 -37
- package/build/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.js +0 -38
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.js +0 -46
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.js.map +0 -1
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.d.ts +0 -3
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.js +0 -29
- package/build/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.js.map +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.d.ts +0 -1
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.js +0 -14
- package/build/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.js.map +0 -1
- package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +0 -15
- package/src/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.ts +0 -17
- package/src/.spruce/events/calendar/listCalendarEventTypes.v2021_05_19.contract.ts +0 -16
- package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +0 -54
- package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +0 -55
- package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +0 -54
- package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +0 -55
- package/src/.spruce/events/forms/didUpdateCompletedForm.v2021_07_02.contract.ts +0 -15
- package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +0 -48
- package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +0 -54
- package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +0 -90
- package/src/.spruce/events/forms/updateCompletedForm.v2021_07_02.contract.ts +0 -17
- package/src/.spruce/events/mySkill163362874854325100/myCoolEvent.v2021_01_22.contract.ts +0 -45
- package/src/.spruce/events/mySkill163362882591525586/myCoolEvent.v2021_01_22.contract.ts +0 -45
- package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +0 -45
- package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +0 -45
- package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +0 -45
- package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +0 -22
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +0 -24
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +0 -22
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +0 -36
- package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitPayload.schema.ts +0 -29
- package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema.ts +0 -23
- package/src/.spruce/schemas/calendar/v2021_05_19/fullCalendarEventType.schema.ts +0 -39
- package/src/.spruce/schemas/calendar/v2021_05_19/listCalendarEventTypesResponsePayload.schema.ts +0 -25
- package/src/.spruce/schemas/forms/v2021_07_02/builtForm.schema.ts +0 -50
- package/src/.spruce/schemas/forms/v2021_07_02/completedFormResponse.schema.ts +0 -41
- package/src/.spruce/schemas/forms/v2021_07_02/completedFormSourceForm.schema.ts +0 -44
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitPayload.schema.ts +0 -24
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToFormResponsePayload.schema.ts +0 -22
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitPayload.schema.ts +0 -24
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/convertPdfToSchemasResponsePayload.schema.ts +0 -25
- package/src/.spruce/schemas/forms/v2021_07_02/createBuiltForm.schema.ts +0 -38
- package/src/.spruce/schemas/forms/v2021_07_02/createFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/createFormResponsePayload.schema.ts +0 -29
- package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTarget.schema.ts +0 -23
- package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/deleteCompletedFormResponsePayload.schema.ts +0 -23
- package/src/.spruce/schemas/forms/v2021_07_02/didSaveFormEmitPayload.schema.ts +0 -23
- package/src/.spruce/schemas/forms/v2021_07_02/didUpdateCompletedFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTarget.schema.ts +0 -23
- package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormEventForm.schema.ts +0 -58
- package/src/.spruce/schemas/forms/v2021_07_02/getCompletedFormResponsePayload.schema.ts +0 -23
- package/src/.spruce/schemas/forms/v2021_07_02/listCompletedFormsResponsePayload.schema.ts +0 -25
- package/src/.spruce/schemas/forms/v2021_07_02/listFormsForm.schema.ts +0 -42
- package/src/.spruce/schemas/forms/v2021_07_02/listFormsResponsePayload.schema.ts +0 -25
- package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitPayload.schema.ts +0 -29
- package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormEmitTargetAndPayload.schema.ts +0 -30
- package/src/.spruce/schemas/forms/v2021_07_02/updateCompletedFormResponsePayload.schema.ts +0 -23
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/builderImportExportPage.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formBuilderImportExportObject.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/formSection.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/list.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCell.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listCellButton.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listRow.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listSelectInput.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/listTextInput.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/selectInputChoice.schema.ts +0 -1
- package/src/.spruce/schemas/heartwoodViewControllers/v2021_02_11/text.schema.ts +0 -1
|
@@ -2,6 +2,7 @@ import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
|
2
2
|
import { test, assert } from '@sprucelabs/test'
|
|
3
3
|
import CommandService from '../../services/CommandService'
|
|
4
4
|
import AbstractCliTest from '../../tests/AbstractCliTest'
|
|
5
|
+
import uiAssertUtil from '../../tests/utilities/uiAssert.utility'
|
|
5
6
|
|
|
6
7
|
export default class UpgradingANodeModuleTest extends AbstractCliTest {
|
|
7
8
|
protected static async beforeEach() {
|
|
@@ -43,4 +44,27 @@ export default class UpgradingANodeModuleTest extends AbstractCliTest {
|
|
|
43
44
|
assert.isFalse(doesExist, `Should not have found ${search}`)
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
|
|
48
|
+
@test()
|
|
49
|
+
protected static async shouldReWriteNodeDirsAndSkipIndx() {
|
|
50
|
+
for (const file of ['tsconfig.json', 'src/index.ts']) {
|
|
51
|
+
const tsConfig = this.resolvePath(file)
|
|
52
|
+
diskUtil.writeFile(tsConfig, 'beenChanged')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
CommandService.setMockResponse(/yarn/gi, {
|
|
56
|
+
code: 0,
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
const promise = this.Action('node', 'upgrade').execute({})
|
|
60
|
+
|
|
61
|
+
await uiAssertUtil.assertRendersConfirmWriteFile(this.ui)
|
|
62
|
+
|
|
63
|
+
assert.isEqual(
|
|
64
|
+
diskUtil.readFile(this.resolvePath('src/index.ts')),
|
|
65
|
+
'beenChanged'
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
await promise
|
|
69
|
+
}
|
|
46
70
|
}
|
|
@@ -24,14 +24,14 @@ export default class CreatingAListenerTest extends AbstractEventTest {
|
|
|
24
24
|
protected static async throwsWithBadNamespace() {
|
|
25
25
|
await this.installEventFeature('events')
|
|
26
26
|
const results = await this.Action('event', 'listen').execute({
|
|
27
|
-
|
|
27
|
+
namespace: 'taco-bell',
|
|
28
28
|
})
|
|
29
29
|
|
|
30
30
|
assert.isTruthy(results.errors)
|
|
31
31
|
const err = results.errors[0]
|
|
32
32
|
|
|
33
|
-
errorAssertUtil.assertError(err, '
|
|
34
|
-
|
|
33
|
+
errorAssertUtil.assertError(err, 'INVALID_NAMESPACES', {
|
|
34
|
+
namespaces: ['taco-bell'],
|
|
35
35
|
})
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ export default class CreatingAListenerTest extends AbstractEventTest {
|
|
|
39
39
|
protected static async throwsWithBadEventName() {
|
|
40
40
|
await this.installEventFeature('events')
|
|
41
41
|
const results = await this.Action('event', 'listen').execute({
|
|
42
|
-
|
|
42
|
+
namespace: 'heartwood',
|
|
43
43
|
eventName: 'bad-time',
|
|
44
44
|
})
|
|
45
45
|
|
|
@@ -58,7 +58,7 @@ export default class CreatingAListenerTest extends AbstractEventTest {
|
|
|
58
58
|
const version = 'v2020_01_01'
|
|
59
59
|
|
|
60
60
|
const results = await this.Action('event', 'listen').execute({
|
|
61
|
-
|
|
61
|
+
namespace: 'skill',
|
|
62
62
|
eventName: 'will-boot',
|
|
63
63
|
version,
|
|
64
64
|
})
|
|
@@ -283,7 +283,7 @@ export default class CreatingAListenerTest extends AbstractEventTest {
|
|
|
283
283
|
})
|
|
284
284
|
|
|
285
285
|
const results = await this.Action('event', 'listen').execute({
|
|
286
|
-
|
|
286
|
+
namespace: skill2.slug,
|
|
287
287
|
eventName: `my-new-event`,
|
|
288
288
|
version: expectedVersion,
|
|
289
289
|
})
|
|
@@ -9,7 +9,7 @@ export default class SkillEmitsBootEventsTest extends AbstractEventTest {
|
|
|
9
9
|
const version = 'v2020_01_01'
|
|
10
10
|
|
|
11
11
|
await this.Action('event', 'listen').execute({
|
|
12
|
-
|
|
12
|
+
namespace: 'skill',
|
|
13
13
|
eventName: 'will-boot',
|
|
14
14
|
version,
|
|
15
15
|
})
|
|
@@ -27,7 +27,7 @@ export default class SkillEmitsBootEventsTest extends AbstractEventTest {
|
|
|
27
27
|
const version = 'v2020_01_01'
|
|
28
28
|
|
|
29
29
|
await this.Action('event', 'listen').execute({
|
|
30
|
-
|
|
30
|
+
namespace: 'skill',
|
|
31
31
|
eventName: 'did-boot',
|
|
32
32
|
version,
|
|
33
33
|
})
|
|
@@ -42,7 +42,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
42
42
|
listenerDestinationDir,
|
|
43
43
|
version: versionOptions,
|
|
44
44
|
eventName,
|
|
45
|
-
|
|
45
|
+
namespace,
|
|
46
46
|
schemaTypesLookupDir,
|
|
47
47
|
contractDestinationDir,
|
|
48
48
|
} = normalizedOptions
|
|
@@ -53,42 +53,52 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
53
53
|
|
|
54
54
|
const skill = await this.Store('skill').loadCurrentSkill()
|
|
55
55
|
|
|
56
|
+
const namespacesForFetch =
|
|
57
|
+
namespace && namespace !== 'skill' ? [namespace] : undefined
|
|
58
|
+
|
|
56
59
|
const { contracts } = skill.slug
|
|
57
|
-
? await eventStore.fetchEventContracts({
|
|
58
|
-
|
|
60
|
+
? await eventStore.fetchEventContracts({
|
|
61
|
+
localNamespace: skill.slug,
|
|
62
|
+
namespaces: namespacesForFetch,
|
|
63
|
+
didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
|
|
64
|
+
})
|
|
65
|
+
: await eventStore.fetchEventContracts({
|
|
66
|
+
namespaces: namespacesForFetch,
|
|
67
|
+
didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
|
|
68
|
+
})
|
|
59
69
|
|
|
60
70
|
this.ui.stopLoading()
|
|
61
71
|
|
|
62
|
-
if (!
|
|
63
|
-
|
|
72
|
+
if (!namespace) {
|
|
73
|
+
namespace = await this.collectNamespace(contracts)
|
|
64
74
|
}
|
|
65
75
|
|
|
66
76
|
const { eventChoicesByNamespace } =
|
|
67
77
|
this.mapContractsToSelectChoices(contracts)
|
|
68
78
|
|
|
69
|
-
if (!eventChoicesByNamespace[
|
|
79
|
+
if (!eventChoicesByNamespace[namespace]) {
|
|
70
80
|
throw new SchemaError({
|
|
71
81
|
code: 'INVALID_PARAMETERS',
|
|
72
|
-
friendlyMessage: `${
|
|
82
|
+
friendlyMessage: `${namespace} is not a valid event namespace. Try: \n\n${Object.keys(
|
|
73
83
|
eventChoicesByNamespace
|
|
74
84
|
).join('\n')}`,
|
|
75
|
-
parameters: ['
|
|
85
|
+
parameters: ['namespace'],
|
|
76
86
|
})
|
|
77
87
|
}
|
|
78
88
|
|
|
79
89
|
if (!eventName) {
|
|
80
|
-
eventName = await this.collectEvent(contracts,
|
|
90
|
+
eventName = await this.collectEvent(contracts, namespace)
|
|
81
91
|
}
|
|
82
92
|
|
|
83
93
|
const fqen = eventNameUtil.join({
|
|
84
94
|
eventName,
|
|
85
|
-
eventNamespace,
|
|
95
|
+
eventNamespace: namespace,
|
|
86
96
|
version: versionOptions,
|
|
87
97
|
})
|
|
88
98
|
|
|
89
99
|
let { version } = eventNameUtil.split(fqen)
|
|
90
100
|
|
|
91
|
-
const isValidEvent = !!eventChoicesByNamespace[
|
|
101
|
+
const isValidEvent = !!eventChoicesByNamespace[namespace].find(
|
|
92
102
|
(e) => e.value === eventName || e.value === fqen
|
|
93
103
|
)
|
|
94
104
|
|
|
@@ -96,7 +106,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
96
106
|
throw new SchemaError({
|
|
97
107
|
code: 'INVALID_PARAMETERS',
|
|
98
108
|
friendlyMessage: `${eventName} is not a valid event . Try: \n\n${eventChoicesByNamespace[
|
|
99
|
-
|
|
109
|
+
namespace
|
|
100
110
|
]
|
|
101
111
|
.map((i) => i.value)
|
|
102
112
|
.join('\n')}`,
|
|
@@ -119,7 +129,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
119
129
|
schemaTypesLookupDir
|
|
120
130
|
)
|
|
121
131
|
|
|
122
|
-
const isSkillEvent =
|
|
132
|
+
const isSkillEvent = namespace !== SKILL_EVENT_NAMESPACE
|
|
123
133
|
|
|
124
134
|
let emitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined
|
|
125
135
|
let responsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined
|
|
@@ -129,7 +139,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
129
139
|
const templateItems = builder.buildEventTemplateItemForName(
|
|
130
140
|
contracts,
|
|
131
141
|
eventNameUtil.join({
|
|
132
|
-
eventNamespace,
|
|
142
|
+
eventNamespace: namespace,
|
|
133
143
|
eventName,
|
|
134
144
|
version: resolvedVersion,
|
|
135
145
|
})
|
|
@@ -146,10 +156,10 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
146
156
|
...normalizedOptions,
|
|
147
157
|
version: resolvedVersion,
|
|
148
158
|
eventName,
|
|
149
|
-
eventNamespace,
|
|
159
|
+
eventNamespace: namespace,
|
|
150
160
|
fullyQualifiedEventName: eventNameUtil.join({
|
|
151
161
|
eventName,
|
|
152
|
-
eventNamespace,
|
|
162
|
+
eventNamespace: namespace,
|
|
153
163
|
version: resolvedVersion,
|
|
154
164
|
}),
|
|
155
165
|
emitPayloadSchemaTemplateItem,
|
|
@@ -183,11 +193,11 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
183
193
|
|
|
184
194
|
private async collectEvent(
|
|
185
195
|
contracts: EventContract[],
|
|
186
|
-
|
|
196
|
+
namespace: string
|
|
187
197
|
): Promise<string> {
|
|
188
198
|
const eventChoices: SelectChoice[] =
|
|
189
199
|
this.mapContractsToSelectChoices(contracts).eventChoicesByNamespace[
|
|
190
|
-
|
|
200
|
+
namespace
|
|
191
201
|
]
|
|
192
202
|
|
|
193
203
|
const eventName = await this.ui.prompt({
|
|
@@ -205,7 +215,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
205
215
|
private async collectNamespace(contracts: EventContract[]): Promise<string> {
|
|
206
216
|
const { namespaceChoices } = this.mapContractsToSelectChoices(contracts)
|
|
207
217
|
|
|
208
|
-
const
|
|
218
|
+
const namespace = await this.ui.prompt({
|
|
209
219
|
type: 'select',
|
|
210
220
|
label: 'Select an event namespace',
|
|
211
221
|
isRequired: true,
|
|
@@ -214,7 +224,7 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
214
224
|
},
|
|
215
225
|
})
|
|
216
226
|
|
|
217
|
-
return
|
|
227
|
+
return namespace
|
|
218
228
|
}
|
|
219
229
|
|
|
220
230
|
private mapContractsToSelectChoices(contracts: EventContract[]) {
|
|
@@ -72,7 +72,13 @@ export default class EventStore extends AbstractStore {
|
|
|
72
72
|
|
|
73
73
|
didUpdateHandler?.('Pulling remote contracts...')
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
let contracts
|
|
76
|
+
try {
|
|
77
|
+
contracts = await this.fetchRemoteContracts(namespaces)
|
|
78
|
+
} catch (err: any) {
|
|
79
|
+
const error = err.options.responseErrors[0]
|
|
80
|
+
throw error
|
|
81
|
+
}
|
|
76
82
|
|
|
77
83
|
const localContract =
|
|
78
84
|
localNamespace &&
|
|
@@ -5,7 +5,11 @@ import nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/node
|
|
|
5
5
|
import { FileDescription, GeneratedFile } from '../../types/cli.types'
|
|
6
6
|
import ScriptUpdater from '../../updaters/ScriptUpdater'
|
|
7
7
|
import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
ActionOptions,
|
|
10
|
+
FeatureActionResponse,
|
|
11
|
+
FeatureCode,
|
|
12
|
+
} from '../features.types'
|
|
9
13
|
import universalDevDependencies from '../universalDevDependencies'
|
|
10
14
|
import universalFileDescriptions from '../universalFileDescriptions'
|
|
11
15
|
import universalScripts from '../universalScripts'
|
|
@@ -49,33 +53,36 @@ export default class NodeFeature<
|
|
|
49
53
|
|
|
50
54
|
void this.emitter.on('feature.did-execute', async (payload) => {
|
|
51
55
|
if (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {
|
|
52
|
-
|
|
53
|
-
this.ui.startLoading('Cleaning build...')
|
|
54
|
-
await this.Service('command').execute('yarn clean.build')
|
|
55
|
-
|
|
56
|
-
this.ui.startLoading('Applying lint rules to all files...')
|
|
57
|
-
await this.Service('command').execute('yarn fix.lint')
|
|
58
|
-
|
|
59
|
-
this.ui.startLoading('Rebuilding...')
|
|
60
|
-
await this.Service('command').execute('yarn build.dev')
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
summaryLines: [
|
|
64
|
-
'Build cleared.',
|
|
65
|
-
'Lint rules applied to source.',
|
|
66
|
-
'Code rebuilt successfully.',
|
|
67
|
-
],
|
|
68
|
-
}
|
|
69
|
-
} catch (err) {
|
|
70
|
-
return {
|
|
71
|
-
errors: [err],
|
|
72
|
-
}
|
|
73
|
-
}
|
|
56
|
+
return this.handleUpgrade()
|
|
74
57
|
}
|
|
75
58
|
|
|
76
59
|
return {}
|
|
77
60
|
})
|
|
78
61
|
}
|
|
62
|
+
private async handleUpgrade(): Promise<FeatureActionResponse> {
|
|
63
|
+
try {
|
|
64
|
+
this.ui.startLoading('Cleaning build...')
|
|
65
|
+
await this.Service('command').execute('yarn clean.build')
|
|
66
|
+
|
|
67
|
+
this.ui.startLoading('Applying lint rules to all files...')
|
|
68
|
+
await this.Service('command').execute('yarn fix.lint')
|
|
69
|
+
|
|
70
|
+
this.ui.startLoading('Rebuilding...')
|
|
71
|
+
await this.Service('command').execute('yarn build.dev')
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
summaryLines: [
|
|
75
|
+
'Build cleared.',
|
|
76
|
+
'Lint rules applied to source.',
|
|
77
|
+
'Code rebuilt successfully.',
|
|
78
|
+
],
|
|
79
|
+
}
|
|
80
|
+
} catch (err) {
|
|
81
|
+
return {
|
|
82
|
+
errors: [err],
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
79
86
|
|
|
80
87
|
public async beforePackageInstall(options: Options) {
|
|
81
88
|
const destination = this.resolveDestination(options)
|
|
@@ -94,8 +101,7 @@ export default class NodeFeature<
|
|
|
94
101
|
|
|
95
102
|
await this.Service('command', destination).execute('yarn init -y')
|
|
96
103
|
|
|
97
|
-
const
|
|
98
|
-
const written = await nodeWriter.writeNodeModule(destination)
|
|
104
|
+
const written = await this.Writer('node').writeNodeModule(destination)
|
|
99
105
|
|
|
100
106
|
files.push(...written)
|
|
101
107
|
|
|
@@ -24,6 +24,13 @@ export default class UpgradeAction extends AbstractAction<OptionsSchema> {
|
|
|
24
24
|
})
|
|
25
25
|
|
|
26
26
|
try {
|
|
27
|
+
const files = await this.Writer('node', {
|
|
28
|
+
upgradeMode: normalizedOptions.upgradeMode,
|
|
29
|
+
}).writeNodeModule(this.cwd, {
|
|
30
|
+
shouldConfirmBeforeWriting: true,
|
|
31
|
+
shouldWriteIndex: false,
|
|
32
|
+
})
|
|
33
|
+
|
|
27
34
|
InFlightEntertainment.start([
|
|
28
35
|
"Let's start the upgrade!",
|
|
29
36
|
'While things are going, see if you can beat 1k points!',
|
|
@@ -34,10 +41,10 @@ export default class UpgradeAction extends AbstractAction<OptionsSchema> {
|
|
|
34
41
|
|
|
35
42
|
return actionUtil.mergeActionResults(dependencyResults, {
|
|
36
43
|
headline: 'Upgrade',
|
|
44
|
+
files,
|
|
37
45
|
})
|
|
38
46
|
} finally {
|
|
39
47
|
InFlightEntertainment.stop()
|
|
40
|
-
|
|
41
48
|
this.ui.renderHero('Upgrade')
|
|
42
49
|
}
|
|
43
50
|
}
|
|
@@ -1,35 +1,50 @@
|
|
|
1
1
|
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
2
2
|
import { DirectoryTemplateCode } from '@sprucelabs/spruce-templates'
|
|
3
|
-
import
|
|
3
|
+
import { GeneratedFile } from '../../../types/cli.types'
|
|
4
|
+
import AbstractWriter, {
|
|
5
|
+
WriteDirectoryTemplateOptions,
|
|
6
|
+
WriteResults,
|
|
7
|
+
} from '../../../writers/AbstractWriter'
|
|
4
8
|
|
|
9
|
+
export const NODE_FILES_TO_UPGRADE = [
|
|
10
|
+
'tsconfig.json',
|
|
11
|
+
'.eslintrc.js',
|
|
12
|
+
'.eslintignore',
|
|
13
|
+
'.gitignore',
|
|
14
|
+
'.nvmrc',
|
|
15
|
+
]
|
|
5
16
|
export default class NodeWriter extends AbstractWriter {
|
|
6
|
-
public async writeNodeModule(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
public async writeNodeModule(
|
|
18
|
+
destinationDir: string,
|
|
19
|
+
options?: Partial<WriteDirectoryTemplateOptions> & {
|
|
20
|
+
shouldWriteIndex?: boolean
|
|
21
|
+
}
|
|
22
|
+
): Promise<WriteResults> {
|
|
23
|
+
let files: GeneratedFile[] = []
|
|
24
|
+
if (options?.shouldWriteIndex !== false) {
|
|
25
|
+
const contents = '//exports go here\n'
|
|
26
|
+
const destination = diskUtil.resolvePath(
|
|
27
|
+
destinationDir,
|
|
28
|
+
'src',
|
|
29
|
+
'index.ts'
|
|
30
|
+
)
|
|
31
|
+
diskUtil.writeFile(destination, contents)
|
|
32
|
+
files.push({
|
|
33
|
+
name: 'src/index.ts',
|
|
34
|
+
description: 'Placeholder entry file!',
|
|
35
|
+
action: 'generated',
|
|
36
|
+
path: destination,
|
|
37
|
+
})
|
|
38
|
+
}
|
|
11
39
|
|
|
12
|
-
const
|
|
40
|
+
const directoryTemplateFiles = await this.writeDirectoryTemplate({
|
|
13
41
|
destinationDir,
|
|
14
42
|
code: DirectoryTemplateCode.Skill,
|
|
15
|
-
filesToWrite:
|
|
16
|
-
'tsconfig.json',
|
|
17
|
-
'.eslintrc.js',
|
|
18
|
-
'.eslintignore',
|
|
19
|
-
'.gitignore',
|
|
20
|
-
'.nvmrc',
|
|
21
|
-
],
|
|
43
|
+
filesToWrite: NODE_FILES_TO_UPGRADE,
|
|
22
44
|
context: { name: 'ignored', description: 'ignored' },
|
|
45
|
+
...options,
|
|
23
46
|
})
|
|
24
47
|
|
|
25
|
-
return [
|
|
26
|
-
{
|
|
27
|
-
name: 'src/index.ts',
|
|
28
|
-
description: 'Placeholder entry file!',
|
|
29
|
-
action: 'generated',
|
|
30
|
-
path: destination,
|
|
31
|
-
},
|
|
32
|
-
...files,
|
|
33
|
-
]
|
|
48
|
+
return [...files, ...directoryTemplateFiles]
|
|
34
49
|
}
|
|
35
50
|
}
|
|
@@ -18,7 +18,7 @@ export default class SetupAction extends AbstractAction<OptionsSchema> {
|
|
|
18
18
|
public async execute(): Promise<FeatureActionResponse> {
|
|
19
19
|
const createListenerAction = this.Action('event', 'listen')
|
|
20
20
|
const results = await createListenerAction.execute({
|
|
21
|
-
|
|
21
|
+
namespace: 'skill',
|
|
22
22
|
eventName: 'will-boot',
|
|
23
23
|
})
|
|
24
24
|
|
|
@@ -3,6 +3,7 @@ import { SpruceSchemas } from '#spruce/schemas/schemas.types'
|
|
|
3
3
|
import SpruceError from '../../../errors/SpruceError'
|
|
4
4
|
import { GlobalEmitter } from '../../../GlobalEmitter'
|
|
5
5
|
import AbstractFeature from '../../AbstractFeature'
|
|
6
|
+
import { NODE_FILES_TO_UPGRADE } from '../../node/writers/NodeWriter'
|
|
6
7
|
|
|
7
8
|
type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions
|
|
8
9
|
|
|
@@ -35,7 +36,7 @@ export default class Updater {
|
|
|
35
36
|
SpruceError
|
|
36
37
|
)
|
|
37
38
|
|
|
38
|
-
const filesToSkip = ['package.json']
|
|
39
|
+
const filesToSkip = [...NODE_FILES_TO_UPGRADE, 'package.json']
|
|
39
40
|
|
|
40
41
|
for (const payload of payloads) {
|
|
41
42
|
if (payload.filesToSkip) {
|
|
@@ -24,6 +24,22 @@ const uiAssertUtil = {
|
|
|
24
24
|
label,
|
|
25
25
|
})
|
|
26
26
|
},
|
|
27
|
+
|
|
28
|
+
async assertRendersConfirmWriteFile(ui: SpyInterface) {
|
|
29
|
+
await ui.waitForInput()
|
|
30
|
+
|
|
31
|
+
const last = ui.getLastInvocation()
|
|
32
|
+
|
|
33
|
+
assert.isEqual(last.options.type, 'select')
|
|
34
|
+
assert.isEqualDeep(last.options.options.choices, [
|
|
35
|
+
{
|
|
36
|
+
label: 'Overwrite',
|
|
37
|
+
value: 'overwrite',
|
|
38
|
+
},
|
|
39
|
+
{ value: 'skip', label: 'Skip' },
|
|
40
|
+
{ value: 'alwaysSkip', label: 'Always skip' },
|
|
41
|
+
])
|
|
42
|
+
},
|
|
27
43
|
}
|
|
28
44
|
|
|
29
45
|
export default uiAssertUtil
|
|
@@ -16,13 +16,22 @@ export type WriteResults = GeneratedFile[]
|
|
|
16
16
|
export interface WriterOptions {
|
|
17
17
|
templates: Templates
|
|
18
18
|
term: GraphicsInterface
|
|
19
|
-
askBeforeUpdating?: boolean
|
|
20
19
|
upgradeMode?: UpgradeMode
|
|
21
20
|
fileDescriptions: FileDescription[]
|
|
22
21
|
linter?: LintService
|
|
23
22
|
settings: SettingsService
|
|
24
23
|
}
|
|
25
24
|
|
|
25
|
+
export interface WriteDirectoryTemplateOptions {
|
|
26
|
+
destinationDir: string
|
|
27
|
+
code: DirectoryTemplateCode
|
|
28
|
+
filesToWrite?: string[]
|
|
29
|
+
filesToSkip?: string[]
|
|
30
|
+
context: any
|
|
31
|
+
shouldConfirmBeforeWriting?: boolean
|
|
32
|
+
firstFileWriteMessage?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
26
35
|
export default abstract class AbstractWriter {
|
|
27
36
|
protected templates: Templates
|
|
28
37
|
protected ui: GraphicsInterface
|
|
@@ -59,15 +68,9 @@ export default abstract class AbstractWriter {
|
|
|
59
68
|
this.isLintingEnabled = true
|
|
60
69
|
}
|
|
61
70
|
|
|
62
|
-
protected async writeDirectoryTemplate(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
filesToWrite?: string[]
|
|
66
|
-
filesToSkip?: string[]
|
|
67
|
-
context: any
|
|
68
|
-
shouldConfirmBeforeWriting?: boolean
|
|
69
|
-
firstFileWriteMessage?: string
|
|
70
|
-
}) {
|
|
71
|
+
protected async writeDirectoryTemplate(
|
|
72
|
+
options: WriteDirectoryTemplateOptions
|
|
73
|
+
) {
|
|
71
74
|
const {
|
|
72
75
|
context,
|
|
73
76
|
destinationDir,
|
|
@@ -93,6 +96,7 @@ export default abstract class AbstractWriter {
|
|
|
93
96
|
!filesToWrite || filesToWrite.indexOf(generated.filename) > -1
|
|
94
97
|
const shouldSkip =
|
|
95
98
|
filesToSkip && filesToSkip.indexOf(generated.filename) > -1
|
|
99
|
+
|
|
96
100
|
if (shouldWrite && !shouldSkip) {
|
|
97
101
|
results = await this.writeFileIfChangedMixinResults(
|
|
98
102
|
pathUtil.join(destinationDir, generated.relativePath),
|
|
@@ -128,6 +132,7 @@ export default abstract class AbstractWriter {
|
|
|
128
132
|
|
|
129
133
|
if (!diskUtil.doesFileExist(destination)) {
|
|
130
134
|
let write = true
|
|
135
|
+
|
|
131
136
|
if (
|
|
132
137
|
this.shouldConfirmBeforeWriting &&
|
|
133
138
|
fileDescription?.confirmPromptOnFirstWrite
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const didBookAppointmentsEventContract: {
|
|
2
|
-
eventSignatures: {
|
|
3
|
-
'appointments.did-book-appointments::v2021_06_23': {
|
|
4
|
-
isGlobal: true;
|
|
5
|
-
emitPayloadSchema: import("@sprucelabs/mercury-types").SpruceSchemas.Appointments.v2021_06_23.DidBookAppointmentsEmitTargetAndPayloadSchema;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export default didBookAppointmentsEventContract;
|
|
10
|
-
export declare type DidBookAppointmentsEventContract = typeof didBookAppointmentsEventContract;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _mercuryTypes = require("@sprucelabs/mercury-types");
|
|
11
|
-
|
|
12
|
-
var _didBookAppointmentsEmitTargetAndPayload = _interopRequireDefault(require("../../schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema"));
|
|
13
|
-
|
|
14
|
-
var didBookAppointmentsEventContract = (0, _mercuryTypes.buildEventContract)({
|
|
15
|
-
eventSignatures: {
|
|
16
|
-
'appointments.did-book-appointments::v2021_06_23': {
|
|
17
|
-
isGlobal: true,
|
|
18
|
-
emitPayloadSchema: _didBookAppointmentsEmitTargetAndPayload["default"]
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
var _default = didBookAppointmentsEventContract;
|
|
23
|
-
exports["default"] = _default;
|
|
24
|
-
//# sourceMappingURL=didBookAppointments.v2021_06_23.contract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts"],"names":["didBookAppointmentsEventContract","eventSignatures","isGlobal","emitPayloadSchema","didBookAppointmentsEmitTargetAndPayloadSchema"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,gCAAgC,GAAG,sCAAmB;AAC3DC,EAAAA,eAAe,EAAE;AAChB,uDAAmD;AAClDC,MAAAA,QAAQ,EAAE,IADwC;AAElDC,MAAAA,iBAAiB,EAAEC;AAF+B;AADnC;AAD0C,CAAnB,CAAzC;eAQeJ,gC","sourcesContent":["import { buildEventContract } from '@sprucelabs/mercury-types'\nimport didBookAppointmentsEmitTargetAndPayloadSchema from '#spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema'\n\nconst didBookAppointmentsEventContract = buildEventContract({\n\teventSignatures: {\n\t\t'appointments.did-book-appointments::v2021_06_23': {\n\t\t\tisGlobal: true,\n\t\t\temitPayloadSchema: didBookAppointmentsEmitTargetAndPayloadSchema,\n\t\t},\n\t},\n})\nexport default didBookAppointmentsEventContract\n\nexport type DidBookAppointmentsEventContract =\n\ttypeof didBookAppointmentsEventContract\n"],"file":"didBookAppointments.v2021_06_23.contract.js"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
declare const createCalendarEventTypeEventContract: {
|
|
2
|
-
eventSignatures: {
|
|
3
|
-
'calendar.create-calendar-event-type::v2021_05_19': {
|
|
4
|
-
isGlobal: true;
|
|
5
|
-
emitPayloadSchema: import("@sprucelabs/mercury-types").SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeEmitTargetAndPayloadSchema;
|
|
6
|
-
responsePayloadSchema: import("@sprucelabs/mercury-types").SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export default createCalendarEventTypeEventContract;
|
|
11
|
-
export declare type CreateCalendarEventTypeEventContract = typeof createCalendarEventTypeEventContract;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _mercuryTypes = require("@sprucelabs/mercury-types");
|
|
11
|
-
|
|
12
|
-
var _createCalendarEventTypeEmitTargetAndPayload = _interopRequireDefault(require("../../schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema"));
|
|
13
|
-
|
|
14
|
-
var _createCalendarEventTypeResponsePayload = _interopRequireDefault(require("../../schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema"));
|
|
15
|
-
|
|
16
|
-
var createCalendarEventTypeEventContract = (0, _mercuryTypes.buildEventContract)({
|
|
17
|
-
eventSignatures: {
|
|
18
|
-
'calendar.create-calendar-event-type::v2021_05_19': {
|
|
19
|
-
isGlobal: true,
|
|
20
|
-
emitPayloadSchema: _createCalendarEventTypeEmitTargetAndPayload["default"],
|
|
21
|
-
responsePayloadSchema: _createCalendarEventTypeResponsePayload["default"]
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var _default = createCalendarEventTypeEventContract;
|
|
26
|
-
exports["default"] = _default;
|
|
27
|
-
//# sourceMappingURL=createCalendarEventType.v2021_05_19.contract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/.spruce/events/calendar/createCalendarEventType.v2021_05_19.contract.ts"],"names":["createCalendarEventTypeEventContract","eventSignatures","isGlobal","emitPayloadSchema","createCalendarEventTypeEmitTargetAndPayloadSchema","responsePayloadSchema","createCalendarEventTypeResponsePayloadSchema"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,oCAAoC,GAAG,sCAAmB;AAC/DC,EAAAA,eAAe,EAAE;AAChB,wDAAoD;AACnDC,MAAAA,QAAQ,EAAE,IADyC;AAEnDC,MAAAA,iBAAiB,EAAEC,uDAFgC;AAGnDC,MAAAA,qBAAqB,EAAEC;AAH4B;AADpC;AAD8C,CAAnB,CAA7C;eASeN,oC","sourcesContent":["import { buildEventContract } from '@sprucelabs/mercury-types'\nimport createCalendarEventTypeEmitTargetAndPayloadSchema from '#spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeEmitTargetAndPayload.schema'\nimport createCalendarEventTypeResponsePayloadSchema from '#spruce/schemas/calendar/v2021_05_19/createCalendarEventTypeResponsePayload.schema'\n\nconst createCalendarEventTypeEventContract = buildEventContract({\n\teventSignatures: {\n\t\t'calendar.create-calendar-event-type::v2021_05_19': {\n\t\t\tisGlobal: true,\n\t\t\temitPayloadSchema: createCalendarEventTypeEmitTargetAndPayloadSchema,\n\t\t\tresponsePayloadSchema: createCalendarEventTypeResponsePayloadSchema,\n\t\t},\n\t},\n})\nexport default createCalendarEventTypeEventContract\n\nexport type CreateCalendarEventTypeEventContract =\n\ttypeof createCalendarEventTypeEventContract\n"],"file":"createCalendarEventType.v2021_05_19.contract.js"}
|