@fieldia/core 0.30.1 → 0.31.0
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/README.md +362 -1
- package/package.json +1 -1
- package/schema/page.schema.json +758 -1
- package/src/index.d.mts +13 -2
- package/src/index.d.ts +13 -2
- package/src/index.js +45 -2
- package/src/index.js.map +1 -1
- package/src/index.mjs +18 -2
- package/src/index.mjs.map +1 -1
- package/src/lib/format/actions.d.mts +16 -16
- package/src/lib/format/actions.d.ts +16 -16
- package/src/lib/format/actions.js +3 -0
- package/src/lib/format/actions.js.map +1 -1
- package/src/lib/format/actions.mjs +3 -0
- package/src/lib/format/actions.mjs.map +1 -1
- package/src/lib/format/address-search.js +3 -0
- package/src/lib/format/address-search.js.map +1 -1
- package/src/lib/format/address-search.mjs +3 -0
- package/src/lib/format/address-search.mjs.map +1 -1
- package/src/lib/format/duplicates.js +3 -0
- package/src/lib/format/duplicates.js.map +1 -1
- package/src/lib/format/duplicates.mjs +3 -0
- package/src/lib/format/duplicates.mjs.map +1 -1
- package/src/lib/format/endings.js +3 -0
- package/src/lib/format/endings.js.map +1 -1
- package/src/lib/format/endings.mjs +3 -0
- package/src/lib/format/endings.mjs.map +1 -1
- package/src/lib/format/field.d.mts +669 -0
- package/src/lib/format/field.d.ts +669 -0
- package/src/lib/format/field.js +42 -4
- package/src/lib/format/field.js.map +1 -1
- package/src/lib/format/field.mjs +42 -4
- package/src/lib/format/field.mjs.map +1 -1
- package/src/lib/format/flow-checks.d.mts +14 -0
- package/src/lib/format/flow-checks.d.ts +14 -0
- package/src/lib/format/flow-checks.js +61 -0
- package/src/lib/format/flow-checks.js.map +1 -0
- package/src/lib/format/flow-checks.mjs +58 -0
- package/src/lib/format/flow-checks.mjs.map +1 -0
- package/src/lib/format/flow.d.mts +43 -0
- package/src/lib/format/flow.d.ts +43 -0
- package/src/lib/format/flow.js +22 -0
- package/src/lib/format/flow.js.map +1 -0
- package/src/lib/format/flow.mjs +19 -0
- package/src/lib/format/flow.mjs.map +1 -0
- package/src/lib/format/from-schema.d.mts +70 -0
- package/src/lib/format/from-schema.d.ts +70 -0
- package/src/lib/format/from-schema.js +599 -0
- package/src/lib/format/from-schema.js.map +1 -0
- package/src/lib/format/from-schema.mjs +591 -0
- package/src/lib/format/from-schema.mjs.map +1 -0
- package/src/lib/format/jitless.d.mts +1 -0
- package/src/lib/format/jitless.d.ts +1 -0
- package/src/lib/format/jitless.js +27 -0
- package/src/lib/format/jitless.js.map +1 -0
- package/src/lib/format/jitless.mjs +24 -0
- package/src/lib/format/jitless.mjs.map +1 -0
- package/src/lib/format/json-schema.js +3 -0
- package/src/lib/format/json-schema.js.map +1 -1
- package/src/lib/format/json-schema.mjs +3 -0
- package/src/lib/format/json-schema.mjs.map +1 -1
- package/src/lib/format/json.js +3 -0
- package/src/lib/format/json.js.map +1 -1
- package/src/lib/format/json.mjs +3 -0
- package/src/lib/format/json.mjs.map +1 -1
- package/src/lib/format/languages-checks.d.mts +2 -1
- package/src/lib/format/languages-checks.d.ts +2 -1
- package/src/lib/format/languages-checks.js +8 -2
- package/src/lib/format/languages-checks.js.map +1 -1
- package/src/lib/format/languages-checks.mjs +8 -2
- package/src/lib/format/languages-checks.mjs.map +1 -1
- package/src/lib/format/later-checks.d.mts +3 -1
- package/src/lib/format/later-checks.d.ts +3 -1
- package/src/lib/format/later-checks.js +3 -1
- package/src/lib/format/later-checks.js.map +1 -1
- package/src/lib/format/later-checks.mjs +3 -1
- package/src/lib/format/later-checks.mjs.map +1 -1
- package/src/lib/format/layout.d.mts +13192 -7550
- package/src/lib/format/layout.d.ts +13192 -7550
- package/src/lib/format/layout.js +61 -3
- package/src/lib/format/layout.js.map +1 -1
- package/src/lib/format/layout.mjs +59 -1
- package/src/lib/format/layout.mjs.map +1 -1
- package/src/lib/format/layout.types.d.mts +3 -1
- package/src/lib/format/layout.types.d.ts +3 -1
- package/src/lib/format/limits.js +3 -0
- package/src/lib/format/limits.js.map +1 -1
- package/src/lib/format/limits.mjs +3 -0
- package/src/lib/format/limits.mjs.map +1 -1
- package/src/lib/format/list-checks.d.mts +1 -1
- package/src/lib/format/list-checks.d.ts +1 -1
- package/src/lib/format/list-checks.js +67 -22
- package/src/lib/format/list-checks.js.map +1 -1
- package/src/lib/format/list-checks.mjs +67 -22
- package/src/lib/format/list-checks.mjs.map +1 -1
- package/src/lib/format/list-rows-checks.d.mts +11 -0
- package/src/lib/format/list-rows-checks.d.ts +11 -0
- package/src/lib/format/list-rows-checks.js +62 -0
- package/src/lib/format/list-rows-checks.js.map +1 -0
- package/src/lib/format/list-rows-checks.mjs +59 -0
- package/src/lib/format/list-rows-checks.mjs.map +1 -0
- package/src/lib/format/media-options.d.mts +84 -0
- package/src/lib/format/media-options.d.ts +84 -0
- package/src/lib/format/media-options.js +86 -0
- package/src/lib/format/media-options.js.map +1 -0
- package/src/lib/format/media-options.mjs +80 -0
- package/src/lib/format/media-options.mjs.map +1 -0
- package/src/lib/format/outbox-checks.d.mts +11 -0
- package/src/lib/format/outbox-checks.d.ts +11 -0
- package/src/lib/format/outbox-checks.js +12 -0
- package/src/lib/format/outbox-checks.js.map +1 -0
- package/src/lib/format/outbox-checks.mjs +9 -0
- package/src/lib/format/outbox-checks.mjs.map +1 -0
- package/src/lib/format/page.d.mts +3057 -966
- package/src/lib/format/page.d.ts +3057 -966
- package/src/lib/format/page.js +15 -0
- package/src/lib/format/page.js.map +1 -1
- package/src/lib/format/page.mjs +15 -0
- package/src/lib/format/page.mjs.map +1 -1
- package/src/lib/format/part-checks.d.mts +3 -0
- package/src/lib/format/part-checks.d.ts +3 -0
- package/src/lib/format/payment-checks.d.mts +13 -0
- package/src/lib/format/payment-checks.d.ts +13 -0
- package/src/lib/format/payment-checks.js +30 -0
- package/src/lib/format/payment-checks.js.map +1 -0
- package/src/lib/format/payment-checks.mjs +27 -0
- package/src/lib/format/payment-checks.mjs.map +1 -0
- package/src/lib/format/payment.d.mts +37 -0
- package/src/lib/format/payment.d.ts +37 -0
- package/src/lib/format/payment.js +15 -0
- package/src/lib/format/payment.js.map +1 -0
- package/src/lib/format/payment.mjs +12 -0
- package/src/lib/format/payment.mjs.map +1 -0
- package/src/lib/format/phone.js +3 -0
- package/src/lib/format/phone.js.map +1 -1
- package/src/lib/format/phone.mjs +3 -0
- package/src/lib/format/phone.mjs.map +1 -1
- package/src/lib/format/picker-options.d.mts +12 -0
- package/src/lib/format/picker-options.d.ts +12 -0
- package/src/lib/format/picker-options.js +21 -3
- package/src/lib/format/picker-options.js.map +1 -1
- package/src/lib/format/picker-options.mjs +20 -2
- package/src/lib/format/picker-options.mjs.map +1 -1
- package/src/lib/format/prefill-checks.d.mts +13 -0
- package/src/lib/format/prefill-checks.d.ts +13 -0
- package/src/lib/format/prefill-checks.js +35 -0
- package/src/lib/format/prefill-checks.js.map +1 -0
- package/src/lib/format/prefill-checks.mjs +32 -0
- package/src/lib/format/prefill-checks.mjs.map +1 -0
- package/src/lib/format/prefill.d.mts +33 -0
- package/src/lib/format/prefill.d.ts +33 -0
- package/src/lib/format/prefill.js +20 -0
- package/src/lib/format/prefill.js.map +1 -0
- package/src/lib/format/prefill.mjs +17 -0
- package/src/lib/format/prefill.mjs.map +1 -0
- package/src/lib/format/quiz.d.mts +58 -0
- package/src/lib/format/quiz.d.ts +58 -0
- package/src/lib/format/quiz.js +24 -0
- package/src/lib/format/quiz.js.map +1 -0
- package/src/lib/format/quiz.mjs +21 -0
- package/src/lib/format/quiz.mjs.map +1 -0
- package/src/lib/format/records.js +3 -0
- package/src/lib/format/records.js.map +1 -1
- package/src/lib/format/records.mjs +3 -0
- package/src/lib/format/records.mjs.map +1 -1
- package/src/lib/format/references.d.mts +1 -1
- package/src/lib/format/references.d.ts +1 -1
- package/src/lib/format/references.js +56 -7
- package/src/lib/format/references.js.map +1 -1
- package/src/lib/format/references.mjs +57 -8
- package/src/lib/format/references.mjs.map +1 -1
- package/src/lib/format/schedule-checks.d.mts +8 -0
- package/src/lib/format/schedule-checks.d.ts +8 -0
- package/src/lib/format/schedule-checks.js +16 -0
- package/src/lib/format/schedule-checks.js.map +1 -0
- package/src/lib/format/schedule-checks.mjs +13 -0
- package/src/lib/format/schedule-checks.mjs.map +1 -0
- package/src/lib/format/signature-checks.d.mts +8 -0
- package/src/lib/format/signature-checks.d.ts +8 -0
- package/src/lib/format/signature-checks.js +21 -0
- package/src/lib/format/signature-checks.js.map +1 -1
- package/src/lib/format/signature-checks.mjs +20 -0
- package/src/lib/format/signature-checks.mjs.map +1 -1
- package/src/lib/format/signature-options.js +3 -0
- package/src/lib/format/signature-options.js.map +1 -1
- package/src/lib/format/signature-options.mjs +3 -0
- package/src/lib/format/signature-options.mjs.map +1 -1
- package/src/lib/format/slots-options.js +3 -0
- package/src/lib/format/slots-options.js.map +1 -1
- package/src/lib/format/slots-options.mjs +3 -0
- package/src/lib/format/slots-options.mjs.map +1 -1
- package/src/lib/format/templates-checks.d.mts +6 -0
- package/src/lib/format/templates-checks.d.ts +6 -0
- package/src/lib/format/templates-checks.js +16 -0
- package/src/lib/format/templates-checks.js.map +1 -0
- package/src/lib/format/templates-checks.mjs +13 -0
- package/src/lib/format/templates-checks.mjs.map +1 -0
- package/src/lib/format/translate.d.mts +2 -0
- package/src/lib/format/translate.d.ts +2 -0
- package/src/lib/format/translate.js +6 -2
- package/src/lib/format/translate.js.map +1 -1
- package/src/lib/format/translate.mjs +4 -2
- package/src/lib/format/translate.mjs.map +1 -1
- package/src/lib/format/typed-options.d.mts +43 -0
- package/src/lib/format/typed-options.d.ts +43 -0
- package/src/lib/format/typed-options.js +50 -0
- package/src/lib/format/typed-options.js.map +1 -0
- package/src/lib/format/typed-options.mjs +46 -0
- package/src/lib/format/typed-options.mjs.map +1 -0
- package/src/lib/format/upgrade.d.mts +5 -1
- package/src/lib/format/upgrade.d.ts +5 -1
- package/src/lib/format/upgrade.js +5 -1
- package/src/lib/format/upgrade.js.map +1 -1
- package/src/lib/format/upgrade.mjs +5 -1
- package/src/lib/format/upgrade.mjs.map +1 -1
- package/src/lib/format/validate.js +3 -0
- package/src/lib/format/validate.js.map +1 -1
- package/src/lib/format/validate.mjs +3 -0
- package/src/lib/format/validate.mjs.map +1 -1
- package/src/lib/format/verify-checks.d.mts +10 -0
- package/src/lib/format/verify-checks.d.ts +10 -0
- package/src/lib/format/verify-checks.js +44 -0
- package/src/lib/format/verify-checks.js.map +1 -0
- package/src/lib/format/verify-checks.mjs +41 -0
- package/src/lib/format/verify-checks.mjs.map +1 -0
- package/src/lib/format/version.d.mts +2 -2
- package/src/lib/format/version.d.ts +2 -2
- package/src/lib/format/version.js +2 -2
- package/src/lib/format/version.js.map +1 -1
- package/src/lib/format/version.mjs +2 -2
- package/src/lib/format/version.mjs.map +1 -1
- package/src/lib/format/week.d.mts +18 -0
- package/src/lib/format/week.d.ts +18 -0
- package/src/lib/format/week.js +58 -0
- package/src/lib/format/week.js.map +1 -0
- package/src/lib/format/week.mjs +55 -0
- package/src/lib/format/week.mjs.map +1 -0
- package/src/lib/record/approvals-part.d.mts +1 -1
- package/src/lib/record/approvals-part.d.ts +1 -1
- package/src/lib/record/approvals-part.js +2 -2
- package/src/lib/record/approvals-part.js.map +1 -1
- package/src/lib/record/approvals-part.mjs +1 -1
- package/src/lib/record/approvals-part.mjs.map +1 -1
- package/src/lib/record/data-source.d.mts +331 -0
- package/src/lib/record/data-source.d.ts +331 -0
- package/src/lib/record/data-source.js.map +1 -1
- package/src/lib/record/data-source.mjs.map +1 -1
- package/src/lib/record/day-words.d.mts +22 -1
- package/src/lib/record/day-words.d.ts +22 -1
- package/src/lib/record/day-words.js +29 -2
- package/src/lib/record/day-words.js.map +1 -1
- package/src/lib/record/day-words.mjs +24 -2
- package/src/lib/record/day-words.mjs.map +1 -1
- package/src/lib/record/files-part.d.mts +1 -0
- package/src/lib/record/files-part.d.ts +1 -0
- package/src/lib/record/files-part.js +7 -1
- package/src/lib/record/files-part.js.map +1 -1
- package/src/lib/record/files-part.mjs +5 -1
- package/src/lib/record/files-part.mjs.map +1 -1
- package/src/lib/record/form-approvals.d.mts +12 -17
- package/src/lib/record/form-approvals.d.ts +12 -17
- package/src/lib/record/form-approvals.js +14 -8
- package/src/lib/record/form-approvals.js.map +1 -1
- package/src/lib/record/form-approvals.mjs +13 -7
- package/src/lib/record/form-approvals.mjs.map +1 -1
- package/src/lib/record/form-limits.d.mts +4 -28
- package/src/lib/record/form-limits.d.ts +4 -28
- package/src/lib/record/form-limits.js +8 -5
- package/src/lib/record/form-limits.js.map +1 -1
- package/src/lib/record/form-limits.mjs +8 -5
- package/src/lib/record/form-limits.mjs.map +1 -1
- package/src/lib/record/form.d.mts +115 -3
- package/src/lib/record/form.d.ts +115 -3
- package/src/lib/record/form.js +262 -65
- package/src/lib/record/form.js.map +1 -1
- package/src/lib/record/form.mjs +263 -66
- package/src/lib/record/form.mjs.map +1 -1
- package/src/lib/record/history-steps.d.mts +38 -0
- package/src/lib/record/history-steps.d.ts +38 -0
- package/src/lib/record/history-steps.js +63 -0
- package/src/lib/record/history-steps.js.map +1 -0
- package/src/lib/record/history-steps.mjs +58 -0
- package/src/lib/record/history-steps.mjs.map +1 -0
- package/src/lib/record/history.d.mts +16 -0
- package/src/lib/record/history.d.ts +16 -0
- package/src/lib/record/history.js +3 -0
- package/src/lib/record/history.js.map +1 -0
- package/src/lib/record/history.mjs +2 -0
- package/src/lib/record/history.mjs.map +1 -0
- package/src/lib/record/input-rules.d.mts +2 -0
- package/src/lib/record/input-rules.d.ts +2 -0
- package/src/lib/record/input-rules.js +4 -1
- package/src/lib/record/input-rules.js.map +1 -1
- package/src/lib/record/input-rules.mjs +2 -0
- package/src/lib/record/input-rules.mjs.map +1 -1
- package/src/lib/record/joins.d.mts +143 -0
- package/src/lib/record/joins.d.ts +143 -0
- package/src/lib/record/joins.js +28 -0
- package/src/lib/record/joins.js.map +1 -0
- package/src/lib/record/joins.mjs +24 -0
- package/src/lib/record/joins.mjs.map +1 -0
- package/src/lib/record/limits.js +7 -4
- package/src/lib/record/limits.js.map +1 -1
- package/src/lib/record/limits.mjs +8 -5
- package/src/lib/record/limits.mjs.map +1 -1
- package/src/lib/record/link-values.d.mts +31 -0
- package/src/lib/record/link-values.d.ts +31 -0
- package/src/lib/record/link-values.js +132 -0
- package/src/lib/record/link-values.js.map +1 -0
- package/src/lib/record/link-values.mjs +125 -0
- package/src/lib/record/link-values.mjs.map +1 -0
- package/src/lib/record/live-later.d.mts +15 -0
- package/src/lib/record/live-later.d.ts +15 -0
- package/src/lib/record/live-later.js +10 -0
- package/src/lib/record/live-later.js.map +1 -0
- package/src/lib/record/live-later.mjs +7 -0
- package/src/lib/record/live-later.mjs.map +1 -0
- package/src/lib/record/live-part.d.mts +6 -0
- package/src/lib/record/live-part.d.ts +6 -0
- package/src/lib/record/live-part.js +12 -0
- package/src/lib/record/live-part.js.map +1 -0
- package/src/lib/record/live-part.mjs +7 -0
- package/src/lib/record/live-part.mjs.map +1 -0
- package/src/lib/record/live.d.mts +8 -0
- package/src/lib/record/live.d.ts +8 -0
- package/src/lib/record/live.js +133 -0
- package/src/lib/record/live.js.map +1 -0
- package/src/lib/record/live.mjs +129 -0
- package/src/lib/record/live.mjs.map +1 -0
- package/src/lib/record/locales/all.d.mts +5 -5
- package/src/lib/record/locales/all.d.ts +5 -5
- package/src/lib/record/locales/all.js +3 -3
- package/src/lib/record/locales/all.js.map +1 -1
- package/src/lib/record/locales/all.mjs +3 -3
- package/src/lib/record/locales/all.mjs.map +1 -1
- package/src/lib/record/locales/ar.js +8 -0
- package/src/lib/record/locales/ar.js.map +1 -1
- package/src/lib/record/locales/ar.mjs +8 -0
- package/src/lib/record/locales/ar.mjs.map +1 -1
- package/src/lib/record/locales/de.js +8 -0
- package/src/lib/record/locales/de.js.map +1 -1
- package/src/lib/record/locales/de.mjs +8 -0
- package/src/lib/record/locales/de.mjs.map +1 -1
- package/src/lib/record/locales/es.d.mts +8 -0
- package/src/lib/record/locales/es.d.ts +8 -0
- package/src/lib/record/locales/es.js +111 -0
- package/src/lib/record/locales/es.js.map +1 -0
- package/src/lib/record/locales/es.mjs +108 -0
- package/src/lib/record/locales/es.mjs.map +1 -0
- package/src/lib/record/locales/fa.d.mts +5 -0
- package/src/lib/record/locales/fa.d.ts +5 -0
- package/src/lib/record/locales/fa.js +117 -0
- package/src/lib/record/locales/fa.js.map +1 -0
- package/src/lib/record/locales/fa.mjs +114 -0
- package/src/lib/record/locales/fa.mjs.map +1 -0
- package/src/lib/record/locales/fr.js +8 -0
- package/src/lib/record/locales/fr.js.map +1 -1
- package/src/lib/record/locales/fr.mjs +8 -0
- package/src/lib/record/locales/fr.mjs.map +1 -1
- package/src/lib/record/locales/later.d.mts +8 -0
- package/src/lib/record/locales/later.d.ts +8 -0
- package/src/lib/record/locales/later.js +16 -0
- package/src/lib/record/locales/later.js.map +1 -0
- package/src/lib/record/locales/later.mjs +13 -0
- package/src/lib/record/locales/later.mjs.map +1 -0
- package/src/lib/record/locales/tr.d.mts +6 -0
- package/src/lib/record/locales/tr.d.ts +6 -0
- package/src/lib/record/locales/tr.js +118 -0
- package/src/lib/record/locales/tr.js.map +1 -0
- package/src/lib/record/locales/tr.mjs +115 -0
- package/src/lib/record/locales/tr.mjs.map +1 -0
- package/src/lib/record/locales/ur.d.mts +9 -0
- package/src/lib/record/locales/ur.d.ts +9 -0
- package/src/lib/record/locales/ur.js +118 -0
- package/src/lib/record/locales/ur.js.map +1 -0
- package/src/lib/record/locales/ur.mjs +115 -0
- package/src/lib/record/locales/ur.mjs.map +1 -0
- package/src/lib/record/memory-codes.d.mts +37 -0
- package/src/lib/record/memory-codes.d.ts +37 -0
- package/src/lib/record/memory-codes.js +50 -0
- package/src/lib/record/memory-codes.js.map +1 -0
- package/src/lib/record/memory-codes.mjs +47 -0
- package/src/lib/record/memory-codes.mjs.map +1 -0
- package/src/lib/record/memory-data-source.d.mts +56 -2
- package/src/lib/record/memory-data-source.d.ts +56 -2
- package/src/lib/record/memory-data-source.js +67 -1
- package/src/lib/record/memory-data-source.js.map +1 -1
- package/src/lib/record/memory-data-source.mjs +67 -1
- package/src/lib/record/memory-data-source.mjs.map +1 -1
- package/src/lib/record/memory-kept.d.mts +3 -1
- package/src/lib/record/memory-kept.d.ts +3 -1
- package/src/lib/record/memory-kept.js +7 -2
- package/src/lib/record/memory-kept.js.map +1 -1
- package/src/lib/record/memory-kept.mjs +7 -2
- package/src/lib/record/memory-kept.mjs.map +1 -1
- package/src/lib/record/memory-later.d.mts +3 -1
- package/src/lib/record/memory-later.d.ts +3 -1
- package/src/lib/record/memory-later.js +9 -5
- package/src/lib/record/memory-later.js.map +1 -1
- package/src/lib/record/memory-later.mjs +8 -4
- package/src/lib/record/memory-later.mjs.map +1 -1
- package/src/lib/record/memory-live.d.mts +8 -0
- package/src/lib/record/memory-live.d.ts +8 -0
- package/src/lib/record/memory-live.js +70 -0
- package/src/lib/record/memory-live.js.map +1 -0
- package/src/lib/record/memory-live.mjs +67 -0
- package/src/lib/record/memory-live.mjs.map +1 -0
- package/src/lib/record/memory-views.d.mts +11 -0
- package/src/lib/record/memory-views.d.ts +11 -0
- package/src/lib/record/memory-views.js +60 -0
- package/src/lib/record/memory-views.js.map +1 -0
- package/src/lib/record/memory-views.mjs +57 -0
- package/src/lib/record/memory-views.mjs.map +1 -0
- package/src/lib/record/messages.d.mts +21 -3
- package/src/lib/record/messages.d.ts +21 -3
- package/src/lib/record/messages.js +15 -2
- package/src/lib/record/messages.js.map +1 -1
- package/src/lib/record/messages.mjs +15 -2
- package/src/lib/record/messages.mjs.map +1 -1
- package/src/lib/record/order.d.mts +21 -0
- package/src/lib/record/order.d.ts +21 -0
- package/src/lib/record/order.js +129 -0
- package/src/lib/record/order.js.map +1 -0
- package/src/lib/record/order.mjs +122 -0
- package/src/lib/record/order.mjs.map +1 -0
- package/src/lib/record/outbox-form.d.mts +79 -0
- package/src/lib/record/outbox-form.d.ts +79 -0
- package/src/lib/record/outbox-form.js +291 -0
- package/src/lib/record/outbox-form.js.map +1 -0
- package/src/lib/record/outbox-form.mjs +286 -0
- package/src/lib/record/outbox-form.mjs.map +1 -0
- package/src/lib/record/outbox-part.d.mts +6 -0
- package/src/lib/record/outbox-part.d.ts +6 -0
- package/src/lib/record/outbox-part.js +13 -0
- package/src/lib/record/outbox-part.js.map +1 -0
- package/src/lib/record/outbox-part.mjs +7 -0
- package/src/lib/record/outbox-part.mjs.map +1 -0
- package/src/lib/record/pay-part.d.mts +6 -0
- package/src/lib/record/pay-part.d.ts +6 -0
- package/src/lib/record/pay-part.js +11 -0
- package/src/lib/record/pay-part.js.map +1 -0
- package/src/lib/record/pay-part.mjs +7 -0
- package/src/lib/record/pay-part.mjs.map +1 -0
- package/src/lib/record/payment-form.d.mts +25 -0
- package/src/lib/record/payment-form.d.ts +25 -0
- package/src/lib/record/payment-form.js +98 -0
- package/src/lib/record/payment-form.js.map +1 -0
- package/src/lib/record/payment-form.mjs +95 -0
- package/src/lib/record/payment-form.mjs.map +1 -0
- package/src/lib/record/prefill-part.d.mts +7 -0
- package/src/lib/record/prefill-part.d.ts +7 -0
- package/src/lib/record/prefill-part.js +15 -0
- package/src/lib/record/prefill-part.js.map +1 -0
- package/src/lib/record/prefill-part.mjs +8 -0
- package/src/lib/record/prefill-part.mjs.map +1 -0
- package/src/lib/record/press-undo.d.mts +42 -0
- package/src/lib/record/press-undo.d.ts +42 -0
- package/src/lib/record/press-undo.js +115 -0
- package/src/lib/record/press-undo.js.map +1 -0
- package/src/lib/record/press-undo.mjs +110 -0
- package/src/lib/record/press-undo.mjs.map +1 -0
- package/src/lib/record/quiz.d.mts +36 -0
- package/src/lib/record/quiz.d.ts +36 -0
- package/src/lib/record/quiz.js +90 -0
- package/src/lib/record/quiz.js.map +1 -0
- package/src/lib/record/quiz.mjs +87 -0
- package/src/lib/record/quiz.mjs.map +1 -0
- package/src/lib/record/record-words.js +1 -1
- package/src/lib/record/record-words.js.map +1 -1
- package/src/lib/record/record-words.mjs +1 -1
- package/src/lib/record/record-words.mjs.map +1 -1
- package/src/lib/record/run.d.mts +54 -2
- package/src/lib/record/run.d.ts +54 -2
- package/src/lib/record/run.js +30 -6
- package/src/lib/record/run.js.map +1 -1
- package/src/lib/record/run.mjs +28 -5
- package/src/lib/record/run.mjs.map +1 -1
- package/src/lib/record/survey-kit.d.mts +37 -0
- package/src/lib/record/survey-kit.d.ts +37 -0
- package/src/lib/record/survey-kit.js +99 -0
- package/src/lib/record/survey-kit.js.map +1 -0
- package/src/lib/record/survey-kit.mjs +96 -0
- package/src/lib/record/survey-kit.mjs.map +1 -0
- package/src/lib/record/survey.d.mts +16 -0
- package/src/lib/record/survey.d.ts +16 -0
- package/src/lib/record/survey.js +17 -0
- package/src/lib/record/survey.js.map +1 -0
- package/src/lib/record/survey.mjs +13 -0
- package/src/lib/record/survey.mjs.map +1 -0
- package/src/lib/record/surveyflow-part.d.mts +9 -0
- package/src/lib/record/surveyflow-part.d.ts +9 -0
- package/src/lib/record/surveyflow-part.js +20 -0
- package/src/lib/record/surveyflow-part.js.map +1 -0
- package/src/lib/record/surveyflow-part.mjs +10 -0
- package/src/lib/record/surveyflow-part.mjs.map +1 -0
- package/src/lib/record/timing.d.mts +76 -0
- package/src/lib/record/timing.d.ts +76 -0
- package/src/lib/record/timing.js +112 -0
- package/src/lib/record/timing.js.map +1 -0
- package/src/lib/record/timing.mjs +104 -0
- package/src/lib/record/timing.mjs.map +1 -0
- package/src/lib/record/undo-later.d.mts +9 -0
- package/src/lib/record/undo-later.d.ts +9 -0
- package/src/lib/record/undo-later.js +10 -0
- package/src/lib/record/undo-later.js.map +1 -0
- package/src/lib/record/undo-later.mjs +7 -0
- package/src/lib/record/undo-later.mjs.map +1 -0
- package/src/lib/record/undo-part.d.mts +8 -0
- package/src/lib/record/undo-part.d.ts +8 -0
- package/src/lib/record/undo-part.js +17 -0
- package/src/lib/record/undo-part.js.map +1 -0
- package/src/lib/record/undo-part.mjs +9 -0
- package/src/lib/record/undo-part.mjs.map +1 -0
- package/src/lib/record/upload-to-later.d.mts +10 -0
- package/src/lib/record/upload-to-later.d.ts +10 -0
- package/src/lib/record/upload-to-later.js +15 -0
- package/src/lib/record/upload-to-later.js.map +1 -0
- package/src/lib/record/upload-to-later.mjs +12 -0
- package/src/lib/record/upload-to-later.mjs.map +1 -0
- package/src/lib/record/uploads.d.mts +5 -0
- package/src/lib/record/uploads.d.ts +5 -0
- package/src/lib/record/uploads.js.map +1 -1
- package/src/lib/record/uploads.mjs.map +1 -1
- package/src/lib/record/values.d.mts +6 -0
- package/src/lib/record/values.d.ts +6 -0
- package/src/lib/record/values.js.map +1 -1
- package/src/lib/record/values.mjs.map +1 -1
- package/src/lib/record/verify-form.d.mts +24 -0
- package/src/lib/record/verify-form.d.ts +24 -0
- package/src/lib/record/verify-form.js +65 -0
- package/src/lib/record/verify-form.js.map +1 -0
- package/src/lib/record/verify-form.mjs +62 -0
- package/src/lib/record/verify-form.mjs.map +1 -0
- package/src/lib/record/verify-part.d.mts +6 -0
- package/src/lib/record/verify-part.d.ts +6 -0
- package/src/lib/record/verify-part.js +11 -0
- package/src/lib/record/verify-part.js.map +1 -0
- package/src/lib/record/verify-part.mjs +7 -0
- package/src/lib/record/verify-part.mjs.map +1 -0
- package/src/lib/record/words-chunks.d.mts +37 -0
- package/src/lib/record/words-chunks.d.ts +37 -0
- package/src/lib/record/words-chunks.js +94 -0
- package/src/lib/record/words-chunks.js.map +1 -0
- package/src/lib/record/words-chunks.mjs +86 -0
- package/src/lib/record/words-chunks.mjs.map +1 -0
- package/src/runtime.d.mts +28 -6
- package/src/runtime.d.ts +28 -6
- package/src/runtime.js +35 -6
- package/src/runtime.js.map +1 -1
- package/src/runtime.mjs +15 -3
- package/src/runtime.mjs.map +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoryCodes = memoryCodes;
|
|
4
|
+
const data_source_1 = require("./data-source");
|
|
5
|
+
/** A memory source's `sendCode` and `checkCode`, over the codes it keeps. */
|
|
6
|
+
function memoryCodes(options = {}, codes) {
|
|
7
|
+
const now = options.now ?? (() => Date.now());
|
|
8
|
+
const length = options.length ?? 6;
|
|
9
|
+
const retryAfter = options.retryAfter ?? 30;
|
|
10
|
+
const sameValue = (request) => (code) => code.pageId === request.pageId && code.field === request.field && code.value === request.value;
|
|
11
|
+
return {
|
|
12
|
+
sendCode(request) {
|
|
13
|
+
const refused = options.refuse?.(request);
|
|
14
|
+
if (refused)
|
|
15
|
+
throw (0, data_source_1.saveRefused)({ kind: 'rule', message: refused });
|
|
16
|
+
const last = codes.filter(sameValue(request)).pop();
|
|
17
|
+
const wait = last ? Math.ceil(retryAfter - (now() - last.sentAt) / 1000) : 0;
|
|
18
|
+
if (wait > 0)
|
|
19
|
+
throw (0, data_source_1.saveRefused)({ kind: 'rule', message: `Wait ${wait} seconds before asking for another code` });
|
|
20
|
+
const code = options.code?.(request, codes.length + 1) ?? String(Math.floor(Math.random() * 10 ** length)).padStart(length, '0');
|
|
21
|
+
const sent = {
|
|
22
|
+
id: `code-${codes.length + 1}`,
|
|
23
|
+
pageId: request.pageId,
|
|
24
|
+
field: request.field,
|
|
25
|
+
value: request.value,
|
|
26
|
+
...(request.by ? { by: request.by } : {}),
|
|
27
|
+
code,
|
|
28
|
+
sentAt: now(),
|
|
29
|
+
expiresAt: now() + (options.expiresIn ?? 600) * 1000,
|
|
30
|
+
triesLeft: options.tries ?? 3,
|
|
31
|
+
};
|
|
32
|
+
codes.push(sent);
|
|
33
|
+
return { id: sent.id, expiresAt: new Date(sent.expiresAt).toISOString(), retryAfter, length: code.length };
|
|
34
|
+
},
|
|
35
|
+
checkCode(request) {
|
|
36
|
+
const sent = (request.id ? codes.find((code) => code.id === request.id) : undefined) ?? codes.filter(sameValue(request)).pop();
|
|
37
|
+
if (!sent || sent.used || sent.value !== request.value || now() > sent.expiresAt)
|
|
38
|
+
return { ok: false, expired: true };
|
|
39
|
+
if (sent.triesLeft <= 0)
|
|
40
|
+
return { ok: false, triesLeft: 0 };
|
|
41
|
+
if (request.code !== sent.code) {
|
|
42
|
+
sent.triesLeft -= 1;
|
|
43
|
+
return { ok: false, triesLeft: sent.triesLeft };
|
|
44
|
+
}
|
|
45
|
+
sent.used = true;
|
|
46
|
+
return { ok: true, proof: `proved:${sent.id}` };
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=memory-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-codes.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/memory-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { saveRefused } from './data-source.mjs';
|
|
2
|
+
/** A memory source's `sendCode` and `checkCode`, over the codes it keeps. */
|
|
3
|
+
export function memoryCodes(options = {}, codes) {
|
|
4
|
+
const now = options.now ?? (() => Date.now());
|
|
5
|
+
const length = options.length ?? 6;
|
|
6
|
+
const retryAfter = options.retryAfter ?? 30;
|
|
7
|
+
const sameValue = (request) => (code) => code.pageId === request.pageId && code.field === request.field && code.value === request.value;
|
|
8
|
+
return {
|
|
9
|
+
sendCode(request) {
|
|
10
|
+
const refused = options.refuse?.(request);
|
|
11
|
+
if (refused)
|
|
12
|
+
throw saveRefused({ kind: 'rule', message: refused });
|
|
13
|
+
const last = codes.filter(sameValue(request)).pop();
|
|
14
|
+
const wait = last ? Math.ceil(retryAfter - (now() - last.sentAt) / 1000) : 0;
|
|
15
|
+
if (wait > 0)
|
|
16
|
+
throw saveRefused({ kind: 'rule', message: `Wait ${wait} seconds before asking for another code` });
|
|
17
|
+
const code = options.code?.(request, codes.length + 1) ?? String(Math.floor(Math.random() * 10 ** length)).padStart(length, '0');
|
|
18
|
+
const sent = {
|
|
19
|
+
id: `code-${codes.length + 1}`,
|
|
20
|
+
pageId: request.pageId,
|
|
21
|
+
field: request.field,
|
|
22
|
+
value: request.value,
|
|
23
|
+
...(request.by ? { by: request.by } : {}),
|
|
24
|
+
code,
|
|
25
|
+
sentAt: now(),
|
|
26
|
+
expiresAt: now() + (options.expiresIn ?? 600) * 1000,
|
|
27
|
+
triesLeft: options.tries ?? 3,
|
|
28
|
+
};
|
|
29
|
+
codes.push(sent);
|
|
30
|
+
return { id: sent.id, expiresAt: new Date(sent.expiresAt).toISOString(), retryAfter, length: code.length };
|
|
31
|
+
},
|
|
32
|
+
checkCode(request) {
|
|
33
|
+
const sent = (request.id ? codes.find((code) => code.id === request.id) : undefined) ?? codes.filter(sameValue(request)).pop();
|
|
34
|
+
if (!sent || sent.used || sent.value !== request.value || now() > sent.expiresAt)
|
|
35
|
+
return { ok: false, expired: true };
|
|
36
|
+
if (sent.triesLeft <= 0)
|
|
37
|
+
return { ok: false, triesLeft: 0 };
|
|
38
|
+
if (request.code !== sent.code) {
|
|
39
|
+
sent.triesLeft -= 1;
|
|
40
|
+
return { ok: false, triesLeft: sent.triesLeft };
|
|
41
|
+
}
|
|
42
|
+
sent.used = true;
|
|
43
|
+
return { ok: true, proof: `proved:${sent.id}` };
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=memory-codes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-codes.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/memory-codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgF,MAAM,eAAe,CAAC;AAmC1H,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,UAAuB,EAAE,EAAE,KAAqB;IAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,CAAC,OAAyD,EAAE,EAAE,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACxM,OAAO;QACL,QAAQ,CAAC,OAAO;YACd,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,yCAAyC,EAAE,CAAC,CAAC;YAClH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjI,MAAM,IAAI,GAAiB;gBACzB,EAAE,EAAE,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,IAAI;gBACJ,MAAM,EAAE,GAAG,EAAE;gBACb,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI;gBACpD,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;aAC9B,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7G,CAAC;QACD,SAAS,CAAC,OAAO;YACf,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC/H,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtH,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;gBACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Option, PropertyDefinition } from '../format/field.mjs';
|
|
2
|
-
import
|
|
2
|
+
import { type MemoryCodes, type SentCodeKept } from './memory-codes.mjs';
|
|
3
|
+
import type { PayRequest, PayResult, DataSource, OptionsRequest, SubmitRequest, SubmitResult, ListedRecord, RecordPermissions, RecordVersion, UploadFile, SlotsRequest, SlotsResult, DuplicatesRequest, DuplicatesResult, LimitsResult, StoredDraft, SaveDraftRequest, ApprovalEntry, SuggestRequest, SuggestResult, RewriteRequest, RewriteResult, SearchToFilterRequest, SearchToFilterResult, ClustersRequest, ClustersResult, SavedView, PresentPerson, RecordTemplate } from './data-source.mjs';
|
|
3
4
|
import { type Scheduler } from './scheduler.mjs';
|
|
4
5
|
import { type MemoryKept } from './memory-kept.mjs';
|
|
5
6
|
import { type MemoryApprovalRoute } from './memory-approvals.mjs';
|
|
@@ -58,6 +59,19 @@ export interface MemoryDataSourceOptions {
|
|
|
58
59
|
versions?: boolean | {
|
|
59
60
|
by?: string;
|
|
60
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Live, as a server with a socket: a record's changes made with `changeElsewhere` are pushed to each page that has it
|
|
64
|
+
* open (`subscribe`), and who has a record open is told (`presence`): each page that opens it, and anyone `arrive`
|
|
65
|
+
* brings (`leave` takes them away). Without it the source has none of `subscribe`, `presence`, `arrive` and `leave`, as
|
|
66
|
+
* a source without a socket: a change elsewhere is found as a save meets it.
|
|
67
|
+
*/
|
|
68
|
+
live?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Record templates saved before, by page id: what `templates` answers first ("Botox package"), as an app's server
|
|
71
|
+
* keeps them — `{}` for none yet. Given, the source has `templates`, `saveTemplate` and `deleteTemplate`; else none,
|
|
72
|
+
* and a page keeps its templates in the viewer's `preferences`.
|
|
73
|
+
*/
|
|
74
|
+
templates?: Record<string, RecordTemplate[]>;
|
|
61
75
|
/**
|
|
62
76
|
* What the person may do with each record, by model: given with its load
|
|
63
77
|
* and its row in a list, and kept to as a backend would — a save, a
|
|
@@ -146,6 +160,29 @@ export interface MemoryDataSourceOptions {
|
|
|
146
160
|
* them. Without it, the source has no `clusters`, and every map gathers its records in the browser.
|
|
147
161
|
*/
|
|
148
162
|
clusters?: (request: ClustersRequest, records: Readonly<Record<string, Record<string, Values>>>, row: (id: RecordId, values: Values) => ListedRecord) => ClustersResult | false | Promise<ClustersResult | false>;
|
|
163
|
+
/**
|
|
164
|
+
* Keep lists' saved views, as an app's server does (`views`, `saveView`, `deleteView`): those it starts with, by page
|
|
165
|
+
* id — the team's shared ones, each with who made it (`by`), and this person's own (`mine`) — `{}` for none yet.
|
|
166
|
+
* Without it, the source has none of the three, and a list keeps its favourites in the browser, as before.
|
|
167
|
+
*/
|
|
168
|
+
views?: Record<string, SavedView[]>;
|
|
169
|
+
/**
|
|
170
|
+
* How the codes that prove an email or a phone are made and checked (`sendCode`, `checkCode`), as an app's own
|
|
171
|
+
* service would: their digits, how long each works, how soon another may be asked for, the wrong ones taken. Each
|
|
172
|
+
* code sent is kept in `codes`, where a demo shows it as the message would. See `MemoryCodes`.
|
|
173
|
+
*/
|
|
174
|
+
codes?: MemoryCodes;
|
|
175
|
+
/**
|
|
176
|
+
* How a payment the answers wait for ends (`pay`), as an app's provider would answer: paid, with a reference of its
|
|
177
|
+
* own, unless this says otherwise — a demo's stand-in checkout drawn in the request's `slot`, a test's decline. Each
|
|
178
|
+
* payment asked for is kept in `payments`.
|
|
179
|
+
*/
|
|
180
|
+
pay?: (request: PayRequest, count: number) => PayResult | Promise<PayResult>;
|
|
181
|
+
/**
|
|
182
|
+
* Whether there is no signal now: while it says so, a save, a send and a file's upload fail as a network does
|
|
183
|
+
* (`TypeError: Failed to fetch`) — a demo's "Work offline", a test's outbox. Signal always, unless said.
|
|
184
|
+
*/
|
|
185
|
+
offline?: () => boolean;
|
|
149
186
|
}
|
|
150
187
|
/** What a memory source's AI help answers with (`MemoryDataSourceOptions.assist`): each given, from its records. */
|
|
151
188
|
export interface MemoryAssist {
|
|
@@ -155,14 +192,21 @@ export interface MemoryAssist {
|
|
|
155
192
|
}
|
|
156
193
|
/** The members of AI help a memory source has only where its `assist` answers them. */
|
|
157
194
|
type AssistMembers = 'suggest' | 'rewrite' | 'searchToFilter';
|
|
195
|
+
/**
|
|
196
|
+
* The members a memory source has only where an option says how it answers: AI help's (`assist`), a list's map's
|
|
197
|
+
* `clusters`, lists' saved views (`views`), record templates (`templates`) and live updates (`live`).
|
|
198
|
+
*/
|
|
199
|
+
type OptionalMembers = AssistMembers | 'clusters' | 'views' | 'saveView' | 'deleteView' | 'templates' | 'saveTemplate' | 'deleteTemplate' | 'subscribe' | 'presence';
|
|
158
200
|
/**
|
|
159
201
|
* Every member of a data source but `exportRecords` and `importRecords`: a
|
|
160
202
|
* memory source leaves an export and an import to the browser, as a source
|
|
161
203
|
* without a server of its own does. A test or a demo gives it one by setting
|
|
162
204
|
* it. AI help's (`suggest`, `rewrite`, `searchToFilter`) where its `assist`
|
|
163
205
|
* option answers them. `clusters` is there where its option says how it answers.
|
|
206
|
+
* Saved views (`views`, `saveView`, `deleteView`) where it is given `views`; record templates (`templates`,
|
|
207
|
+
* `saveTemplate`, `deleteTemplate`) where it is given `templates`; `subscribe` and `presence` with `live`.
|
|
164
208
|
*/
|
|
165
|
-
export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecords' | 'importRecords' |
|
|
209
|
+
export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecords' | 'importRecords' | OptionalMembers>>, Pick<DataSource, 'exportRecords' | 'importRecords' | OptionalMembers> {
|
|
166
210
|
readonly records: Record<string, Record<string, Values>>;
|
|
167
211
|
/**
|
|
168
212
|
* The records said to be someone else for one another, by model: each pair of ids, in the order kept, through
|
|
@@ -183,6 +227,10 @@ export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecor
|
|
|
183
227
|
by: string;
|
|
184
228
|
at?: string;
|
|
185
229
|
}): RecordVersion;
|
|
230
|
+
/** Someone else opens a record, or changes whether they are editing it: told to each page that has it open. With `live`. */
|
|
231
|
+
arrive?(model: string, id: RecordId, person: PresentPerson): void;
|
|
232
|
+
/** Someone else closes it. With `live`. */
|
|
233
|
+
leave?(model: string, id: RecordId, person: RecordId): void;
|
|
186
234
|
/** Drafts kept by `saveDraft`, by key, each with its page's id and the request's `later`: the partial answers an app sees. */
|
|
187
235
|
readonly drafts: Record<string, StoredDraft & {
|
|
188
236
|
pageId: string;
|
|
@@ -190,6 +238,12 @@ export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecor
|
|
|
190
238
|
}>;
|
|
191
239
|
/** Take a response to a page as someone else would, on another screen: counted by `limits`, never as this person's. */
|
|
192
240
|
answeredElsewhere(pageId: string, values: Values): void;
|
|
241
|
+
/** The codes `sendCode` sent, in order: each with the value it proves and the code itself, as its message would say it. */
|
|
242
|
+
readonly codes: SentCodeKept[];
|
|
243
|
+
/** The payments `pay` was asked for, in order (without their slot and signal), and how each ended. */
|
|
244
|
+
readonly payments: (Omit<PayRequest, 'slot' | 'signal'> & {
|
|
245
|
+
result: PayResult;
|
|
246
|
+
})[];
|
|
193
247
|
}
|
|
194
248
|
/**
|
|
195
249
|
* A data source that keeps everything in memory. It implements the whole
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Option, PropertyDefinition } from '../format/field';
|
|
2
|
-
import
|
|
2
|
+
import { type MemoryCodes, type SentCodeKept } from './memory-codes';
|
|
3
|
+
import type { PayRequest, PayResult, DataSource, OptionsRequest, SubmitRequest, SubmitResult, ListedRecord, RecordPermissions, RecordVersion, UploadFile, SlotsRequest, SlotsResult, DuplicatesRequest, DuplicatesResult, LimitsResult, StoredDraft, SaveDraftRequest, ApprovalEntry, SuggestRequest, SuggestResult, RewriteRequest, RewriteResult, SearchToFilterRequest, SearchToFilterResult, ClustersRequest, ClustersResult, SavedView, PresentPerson, RecordTemplate } from './data-source';
|
|
3
4
|
import { type Scheduler } from './scheduler';
|
|
4
5
|
import { type MemoryKept } from './memory-kept';
|
|
5
6
|
import { type MemoryApprovalRoute } from './memory-approvals';
|
|
@@ -58,6 +59,19 @@ export interface MemoryDataSourceOptions {
|
|
|
58
59
|
versions?: boolean | {
|
|
59
60
|
by?: string;
|
|
60
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Live, as a server with a socket: a record's changes made with `changeElsewhere` are pushed to each page that has it
|
|
64
|
+
* open (`subscribe`), and who has a record open is told (`presence`): each page that opens it, and anyone `arrive`
|
|
65
|
+
* brings (`leave` takes them away). Without it the source has none of `subscribe`, `presence`, `arrive` and `leave`, as
|
|
66
|
+
* a source without a socket: a change elsewhere is found as a save meets it.
|
|
67
|
+
*/
|
|
68
|
+
live?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Record templates saved before, by page id: what `templates` answers first ("Botox package"), as an app's server
|
|
71
|
+
* keeps them — `{}` for none yet. Given, the source has `templates`, `saveTemplate` and `deleteTemplate`; else none,
|
|
72
|
+
* and a page keeps its templates in the viewer's `preferences`.
|
|
73
|
+
*/
|
|
74
|
+
templates?: Record<string, RecordTemplate[]>;
|
|
61
75
|
/**
|
|
62
76
|
* What the person may do with each record, by model: given with its load
|
|
63
77
|
* and its row in a list, and kept to as a backend would — a save, a
|
|
@@ -146,6 +160,29 @@ export interface MemoryDataSourceOptions {
|
|
|
146
160
|
* them. Without it, the source has no `clusters`, and every map gathers its records in the browser.
|
|
147
161
|
*/
|
|
148
162
|
clusters?: (request: ClustersRequest, records: Readonly<Record<string, Record<string, Values>>>, row: (id: RecordId, values: Values) => ListedRecord) => ClustersResult | false | Promise<ClustersResult | false>;
|
|
163
|
+
/**
|
|
164
|
+
* Keep lists' saved views, as an app's server does (`views`, `saveView`, `deleteView`): those it starts with, by page
|
|
165
|
+
* id — the team's shared ones, each with who made it (`by`), and this person's own (`mine`) — `{}` for none yet.
|
|
166
|
+
* Without it, the source has none of the three, and a list keeps its favourites in the browser, as before.
|
|
167
|
+
*/
|
|
168
|
+
views?: Record<string, SavedView[]>;
|
|
169
|
+
/**
|
|
170
|
+
* How the codes that prove an email or a phone are made and checked (`sendCode`, `checkCode`), as an app's own
|
|
171
|
+
* service would: their digits, how long each works, how soon another may be asked for, the wrong ones taken. Each
|
|
172
|
+
* code sent is kept in `codes`, where a demo shows it as the message would. See `MemoryCodes`.
|
|
173
|
+
*/
|
|
174
|
+
codes?: MemoryCodes;
|
|
175
|
+
/**
|
|
176
|
+
* How a payment the answers wait for ends (`pay`), as an app's provider would answer: paid, with a reference of its
|
|
177
|
+
* own, unless this says otherwise — a demo's stand-in checkout drawn in the request's `slot`, a test's decline. Each
|
|
178
|
+
* payment asked for is kept in `payments`.
|
|
179
|
+
*/
|
|
180
|
+
pay?: (request: PayRequest, count: number) => PayResult | Promise<PayResult>;
|
|
181
|
+
/**
|
|
182
|
+
* Whether there is no signal now: while it says so, a save, a send and a file's upload fail as a network does
|
|
183
|
+
* (`TypeError: Failed to fetch`) — a demo's "Work offline", a test's outbox. Signal always, unless said.
|
|
184
|
+
*/
|
|
185
|
+
offline?: () => boolean;
|
|
149
186
|
}
|
|
150
187
|
/** What a memory source's AI help answers with (`MemoryDataSourceOptions.assist`): each given, from its records. */
|
|
151
188
|
export interface MemoryAssist {
|
|
@@ -155,14 +192,21 @@ export interface MemoryAssist {
|
|
|
155
192
|
}
|
|
156
193
|
/** The members of AI help a memory source has only where its `assist` answers them. */
|
|
157
194
|
type AssistMembers = 'suggest' | 'rewrite' | 'searchToFilter';
|
|
195
|
+
/**
|
|
196
|
+
* The members a memory source has only where an option says how it answers: AI help's (`assist`), a list's map's
|
|
197
|
+
* `clusters`, lists' saved views (`views`), record templates (`templates`) and live updates (`live`).
|
|
198
|
+
*/
|
|
199
|
+
type OptionalMembers = AssistMembers | 'clusters' | 'views' | 'saveView' | 'deleteView' | 'templates' | 'saveTemplate' | 'deleteTemplate' | 'subscribe' | 'presence';
|
|
158
200
|
/**
|
|
159
201
|
* Every member of a data source but `exportRecords` and `importRecords`: a
|
|
160
202
|
* memory source leaves an export and an import to the browser, as a source
|
|
161
203
|
* without a server of its own does. A test or a demo gives it one by setting
|
|
162
204
|
* it. AI help's (`suggest`, `rewrite`, `searchToFilter`) where its `assist`
|
|
163
205
|
* option answers them. `clusters` is there where its option says how it answers.
|
|
206
|
+
* Saved views (`views`, `saveView`, `deleteView`) where it is given `views`; record templates (`templates`,
|
|
207
|
+
* `saveTemplate`, `deleteTemplate`) where it is given `templates`; `subscribe` and `presence` with `live`.
|
|
164
208
|
*/
|
|
165
|
-
export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecords' | 'importRecords' |
|
|
209
|
+
export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecords' | 'importRecords' | OptionalMembers>>, Pick<DataSource, 'exportRecords' | 'importRecords' | OptionalMembers> {
|
|
166
210
|
readonly records: Record<string, Record<string, Values>>;
|
|
167
211
|
/**
|
|
168
212
|
* The records said to be someone else for one another, by model: each pair of ids, in the order kept, through
|
|
@@ -183,6 +227,10 @@ export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecor
|
|
|
183
227
|
by: string;
|
|
184
228
|
at?: string;
|
|
185
229
|
}): RecordVersion;
|
|
230
|
+
/** Someone else opens a record, or changes whether they are editing it: told to each page that has it open. With `live`. */
|
|
231
|
+
arrive?(model: string, id: RecordId, person: PresentPerson): void;
|
|
232
|
+
/** Someone else closes it. With `live`. */
|
|
233
|
+
leave?(model: string, id: RecordId, person: RecordId): void;
|
|
186
234
|
/** Drafts kept by `saveDraft`, by key, each with its page's id and the request's `later`: the partial answers an app sees. */
|
|
187
235
|
readonly drafts: Record<string, StoredDraft & {
|
|
188
236
|
pageId: string;
|
|
@@ -190,6 +238,12 @@ export interface MemoryDataSource extends Required<Omit<DataSource, 'exportRecor
|
|
|
190
238
|
}>;
|
|
191
239
|
/** Take a response to a page as someone else would, on another screen: counted by `limits`, never as this person's. */
|
|
192
240
|
answeredElsewhere(pageId: string, values: Values): void;
|
|
241
|
+
/** The codes `sendCode` sent, in order: each with the value it proves and the code itself, as its message would say it. */
|
|
242
|
+
readonly codes: SentCodeKept[];
|
|
243
|
+
/** The payments `pay` was asked for, in order (without their slot and signal), and how each ended. */
|
|
244
|
+
readonly payments: (Omit<PayRequest, 'slot' | 'signal'> & {
|
|
245
|
+
result: PayResult;
|
|
246
|
+
})[];
|
|
193
247
|
}
|
|
194
248
|
/**
|
|
195
249
|
* A data source that keeps everything in memory. It implements the whole
|
|
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createMemoryDataSource = createMemoryDataSource;
|
|
4
4
|
exports.memorySource = memorySource;
|
|
5
5
|
const input_rules_1 = require("./input-rules");
|
|
6
|
+
const memory_codes_1 = require("./memory-codes");
|
|
6
7
|
const data_source_1 = require("./data-source");
|
|
8
|
+
const memory_live_1 = require("./memory-live");
|
|
7
9
|
const filter_1 = require("./filter");
|
|
8
10
|
const periods_1 = require("./periods");
|
|
9
11
|
const scheduler_1 = require("./scheduler");
|
|
10
12
|
const memory_kept_1 = require("./memory-kept");
|
|
11
13
|
const memory_approvals_1 = require("./memory-approvals");
|
|
14
|
+
const memory_views_1 = require("./memory-views");
|
|
12
15
|
const values_1 = require("./values");
|
|
13
16
|
/**
|
|
14
17
|
* A data source that keeps everything in memory. It implements the whole
|
|
@@ -20,7 +23,8 @@ function createMemoryDataSource(options = {}) {
|
|
|
20
23
|
}
|
|
21
24
|
/** A memory source's members, working on what it keeps (`memoryKept`): the one-tag script's memory part. */
|
|
22
25
|
function memorySource(options, kept) {
|
|
23
|
-
const { records, notDuplicatePairs, responses, calls, elsewhere, drafts, table, versionOf, moveOn } = kept;
|
|
26
|
+
const { records, notDuplicatePairs, responses, calls, elsewhere, drafts, codes, payments, table, versionOf, moveOn } = kept;
|
|
27
|
+
const proving = (0, memory_codes_1.memoryCodes)(options.codes, codes);
|
|
24
28
|
let draftIds = 0;
|
|
25
29
|
/** A record's approvals, as an approval engine keeps them (memory-approvals.ts). */
|
|
26
30
|
const approving = (0, memory_approvals_1.memoryApprovals)({
|
|
@@ -63,6 +67,40 @@ function memorySource(options, kept) {
|
|
|
63
67
|
const pause = () => (options.delayMs ? (0, scheduler_1.wait)(options.delayMs, options.scheduler) : Promise.resolve());
|
|
64
68
|
/** A record's name, or its names in each language it is kept in (`{ ar, en }`). */
|
|
65
69
|
const nameOf = (model, id) => table(model)[String(id)]?.[options.labelField?.[model] ?? 'name'];
|
|
70
|
+
/** No signal now (`offline`): fail as a network does. */
|
|
71
|
+
const noSignal = () => {
|
|
72
|
+
if (options.offline?.())
|
|
73
|
+
throw new TypeError('Failed to fetch');
|
|
74
|
+
};
|
|
75
|
+
/** Each page's record templates, as saved: those given first, then each kept, numbered on. */
|
|
76
|
+
const savedTemplates = (0, values_1.structuredCopy)(options.templates ?? {});
|
|
77
|
+
const templatesOf = (pageId) => (savedTemplates[pageId] ??= []);
|
|
78
|
+
let templateIds = 0;
|
|
79
|
+
async function templates(request) {
|
|
80
|
+
calls.push({ method: 'templates', request });
|
|
81
|
+
await pause();
|
|
82
|
+
return (0, values_1.structuredCopy)(templatesOf(request.pageId));
|
|
83
|
+
}
|
|
84
|
+
async function saveTemplate(request) {
|
|
85
|
+
calls.push({ method: 'saveTemplate', request });
|
|
86
|
+
await pause();
|
|
87
|
+
const list = templatesOf(request.pageId);
|
|
88
|
+
const kept = { id: request.template.id ?? `template-${++templateIds}`, name: request.template.name, values: (0, values_1.structuredCopy)(request.template.values) };
|
|
89
|
+
const at = list.findIndex((one) => String(one.id) === String(kept.id));
|
|
90
|
+
if (at >= 0)
|
|
91
|
+
list[at] = kept;
|
|
92
|
+
else
|
|
93
|
+
list.push(kept);
|
|
94
|
+
return (0, values_1.structuredCopy)(kept);
|
|
95
|
+
}
|
|
96
|
+
async function deleteTemplate(request) {
|
|
97
|
+
calls.push({ method: 'deleteTemplate', request });
|
|
98
|
+
await pause();
|
|
99
|
+
const list = templatesOf(request.pageId);
|
|
100
|
+
const at = list.findIndex((one) => String(one.id) === String(request.id));
|
|
101
|
+
if (at >= 0)
|
|
102
|
+
list.splice(at, 1);
|
|
103
|
+
}
|
|
66
104
|
const labelOf = (model, id) => {
|
|
67
105
|
const value = nameOf(model, id);
|
|
68
106
|
const name = oneText(value, options.language);
|
|
@@ -188,8 +226,31 @@ function memorySource(options, kept) {
|
|
|
188
226
|
responses,
|
|
189
227
|
calls,
|
|
190
228
|
drafts,
|
|
229
|
+
codes,
|
|
230
|
+
payments,
|
|
191
231
|
answeredElsewhere: kept.answeredElsewhere,
|
|
232
|
+
async pay(request) {
|
|
233
|
+
const { slot: _slot, signal: _signal, ...asked } = request;
|
|
234
|
+
calls.push({ method: 'pay', request: asked });
|
|
235
|
+
await pause();
|
|
236
|
+
const result = options.pay ? await options.pay(request, payments.length + 1) : { status: 'paid', reference: `PAY-${payments.length + 1}` };
|
|
237
|
+
payments.push({ ...(0, values_1.structuredCopy)(asked), result: (0, values_1.structuredCopy)(result) });
|
|
238
|
+
return result;
|
|
239
|
+
},
|
|
192
240
|
changeElsewhere: kept.changeElsewhere,
|
|
241
|
+
...(0, memory_live_1.memoryLive)(options, kept),
|
|
242
|
+
// Record templates, as an app's server keeps them: where it was given some (`templates`, `{}` for none yet).
|
|
243
|
+
...(options.templates ? { templates, saveTemplate, deleteTemplate } : {}),
|
|
244
|
+
async sendCode(request) {
|
|
245
|
+
calls.push({ method: 'sendCode', request });
|
|
246
|
+
await pause();
|
|
247
|
+
return proving.sendCode(request);
|
|
248
|
+
},
|
|
249
|
+
async checkCode(request) {
|
|
250
|
+
calls.push({ method: 'checkCode', request });
|
|
251
|
+
await pause();
|
|
252
|
+
return proving.checkCode(request);
|
|
253
|
+
},
|
|
193
254
|
async limits(request) {
|
|
194
255
|
calls.push({ method: 'limits', request });
|
|
195
256
|
await pause();
|
|
@@ -264,6 +325,7 @@ function memorySource(options, kept) {
|
|
|
264
325
|
async save(request) {
|
|
265
326
|
calls.push({ method: 'save', request });
|
|
266
327
|
await pause();
|
|
328
|
+
noSignal();
|
|
267
329
|
const saved = write(request);
|
|
268
330
|
// Saved: the draft its changes were kept in is let go, as a server does.
|
|
269
331
|
if (request.draft)
|
|
@@ -441,6 +503,7 @@ function memorySource(options, kept) {
|
|
|
441
503
|
},
|
|
442
504
|
async upload(file, request) {
|
|
443
505
|
calls.push({ method: 'upload', request: { ...request, file } });
|
|
506
|
+
noSignal();
|
|
444
507
|
const stopped = () => Object.assign(new Error('The upload was stopped'), { name: 'AbortError' });
|
|
445
508
|
// A store slow or failing as `storage` says: a refusal at once, a failure partway, the bytes paced as they go.
|
|
446
509
|
const tried = `${file.name}:${file.size}`;
|
|
@@ -487,6 +550,7 @@ function memorySource(options, kept) {
|
|
|
487
550
|
async submit(request) {
|
|
488
551
|
calls.push({ method: 'submit', request });
|
|
489
552
|
await pause();
|
|
553
|
+
noSignal();
|
|
490
554
|
responses.push((0, values_1.structuredCopy)(request));
|
|
491
555
|
// Sent: the draft it was kept in is let go, as a server does.
|
|
492
556
|
if (request.draft)
|
|
@@ -562,6 +626,8 @@ function memorySource(options, kept) {
|
|
|
562
626
|
const own = options.definitions?.[request.list]?.(request.values) ?? [];
|
|
563
627
|
addedDefinitions.set(`${request.list}:${JSON.stringify(own)}`, (0, values_1.structuredCopy)(request.definitions.filter((d) => !own.some((o) => o.name === d.name))));
|
|
564
628
|
},
|
|
629
|
+
// Lists' saved views, where it was given some (memory-views.ts).
|
|
630
|
+
...(options.views ? (0, memory_views_1.memoryViews)(options.views, calls, pause) : {}),
|
|
565
631
|
};
|
|
566
632
|
// AI help's members, where the app gave what answers them (`assist`): each called as a server would be, after the
|
|
567
633
|
// source's pause, from the records it keeps.
|