@adminiumjs/manifest 0.3.40 → 0.3.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/forms.d.ts +9 -0
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +20 -0
- package/dist/forms.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/outbox.d.ts.map +1 -1
- package/dist/outbox.js +5 -4
- package/dist/outbox.js.map +1 -1
- package/dist/public-access.d.ts +2 -1
- package/dist/public-access.d.ts.map +1 -1
- package/dist/public-access.js +24 -3
- package/dist/public-access.js.map +1 -1
- package/dist/schema.d.ts +82 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -1
- package/dist/steps.d.ts +3 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +44 -1
- package/dist/steps.js.map +1 -1
- package/dist/words.d.ts +1 -1
- package/dist/words.d.ts.map +1 -1
- package/dist/words.js +49 -0
- package/dist/words.js.map +1 -1
- package/package.json +2 -2
package/dist/public-access.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare const FORMS_KEY = "forms";
|
|
|
47
47
|
* claims, sessions, children, files and the entry's own confirmation mail is
|
|
48
48
|
* left out: forms send their own.
|
|
49
49
|
*/
|
|
50
|
-
export declare const FORMS_ENTRY_WORDS: readonly ["table", "methods", "key", "writable", "writableValues", "defaults", "requires", "agrees", "anonymous", "requireSetting", "module"];
|
|
50
|
+
export declare const FORMS_ENTRY_WORDS: readonly ["table", "methods", "key", "writable", "writableValues", "defaults", "requires", "agrees", "anonymous", "requireSetting", "module", "source"];
|
|
51
51
|
/** The longest a plain-text value may be unless its column says longer: a name. */
|
|
52
52
|
export declare const PLAIN_TEXT_MAX = 80;
|
|
53
53
|
/** The most digits a plain-text column may take in all: "table 12", "2 without onions", never a phone number. */
|
|
@@ -738,6 +738,7 @@ export declare const publicAccessSchema: z.ZodObject<{
|
|
|
738
738
|
when: z.ZodOptional<z.ZodLiteral<"anonymous">>;
|
|
739
739
|
}, z.core.$strict>>>;
|
|
740
740
|
key: z.ZodOptional<z.ZodString>;
|
|
741
|
+
source: z.ZodOptional<z.ZodString>;
|
|
741
742
|
module: z.ZodOptional<z.ZodString>;
|
|
742
743
|
confirm: z.ZodOptional<z.ZodObject<{
|
|
743
744
|
template: z.ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-access.d.ts","sourceRoot":"","sources":["../src/public-access.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAKnB,mGAAmG;AACnG,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,wDAAwD;AACxD,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"public-access.d.ts","sourceRoot":"","sources":["../src/public-access.ts"],"names":[],"mappings":"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"}
|
package/dist/public-access.js
CHANGED
|
@@ -53,7 +53,7 @@ export const FORMS_KEY = 'forms';
|
|
|
53
53
|
* claims, sessions, children, files and the entry's own confirmation mail is
|
|
54
54
|
* left out: forms send their own.
|
|
55
55
|
*/
|
|
56
|
-
export const FORMS_ENTRY_WORDS = ['table', 'methods', 'key', 'writable', 'writableValues', 'defaults', 'requires', 'agrees', 'anonymous', 'requireSetting', 'module'];
|
|
56
|
+
export const FORMS_ENTRY_WORDS = ['table', 'methods', 'key', 'writable', 'writableValues', 'defaults', 'requires', 'agrees', 'anonymous', 'requireSetting', 'module', 'source'];
|
|
57
57
|
/** The longest a plain-text value may be unless its column says longer: a name. */
|
|
58
58
|
export const PLAIN_TEXT_MAX = 80;
|
|
59
59
|
/** The most digits a plain-text column may take in all: "table 12", "2 without onions", never a phone number. */
|
|
@@ -609,6 +609,13 @@ export const publicAccessSchema = z
|
|
|
609
609
|
.optional(),
|
|
610
610
|
/** Which browser key serves the entry: `customer`, or one of `publicKeys`. */
|
|
611
611
|
key: keyNameSchema.optional(),
|
|
612
|
+
/**
|
|
613
|
+
* A forms entry only: the one `writable` text column a form's fixed
|
|
614
|
+
* "Source" value goes into (an enquiry's "From form": the form's name, or
|
|
615
|
+
* what the owner words it). The builder shows that row on this column;
|
|
616
|
+
* the answer door writes it as the form's settings say, like any other.
|
|
617
|
+
*/
|
|
618
|
+
source: refSchema.optional(),
|
|
612
619
|
/** The part of the app the entry belongs to: closed while it is off (see `modules.ts`). */
|
|
613
620
|
module: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/, 'a module id is kebab-case').optional(),
|
|
614
621
|
/**
|
|
@@ -801,7 +808,7 @@ function readByAnyone(entry) {
|
|
|
801
808
|
* fill named; one per table; and no entry on any key lets anyone read the
|
|
802
809
|
* rows strangers add through it.
|
|
803
810
|
*/
|
|
804
|
-
function formsEntryIssues(entry, i, entries, appKey) {
|
|
811
|
+
function formsEntryIssues(entry, i, entries, appKey, index) {
|
|
805
812
|
const out = [];
|
|
806
813
|
const at = (...rest) => ['publicAccess', i, ...rest];
|
|
807
814
|
// Each answer keeps the row it became by its table's stored name: it must fit an answers table, whole.
|
|
@@ -820,6 +827,18 @@ function formsEntryIssues(entry, i, entries, appKey) {
|
|
|
820
827
|
out.push({ path: at('anonymous'), message: 'a form is sent by strangers: a forms entry says its anonymous limits' });
|
|
821
828
|
if ((entry.writable ?? []).length === 0)
|
|
822
829
|
out.push({ path: at('writable'), message: 'a forms entry names the columns a form may fill (writable)' });
|
|
830
|
+
if (entry.source !== undefined) {
|
|
831
|
+
const named = index.column(entry.table, entry.source);
|
|
832
|
+
if (!(entry.writable ?? []).includes(entry.source)) {
|
|
833
|
+
out.push({ path: at('source'), message: `a form's source goes into one of the columns a form may fill: put "${entry.source}" in writable` });
|
|
834
|
+
}
|
|
835
|
+
else if (named !== undefined && (named.type === 'fk' || named.references !== undefined)) {
|
|
836
|
+
out.push({ path: at('source'), message: `"${entry.source}" links to another row: a form's source is words, so it goes into a text column` });
|
|
837
|
+
}
|
|
838
|
+
else if (named !== undefined && named.type !== 'text') {
|
|
839
|
+
out.push({ path: at('source'), message: `"${entry.source}" holds ${named.type}: a form's source is words, so it goes into a text column` });
|
|
840
|
+
}
|
|
841
|
+
}
|
|
823
842
|
if (entries.findIndex((other) => other.key === FORMS_KEY && other.table === entry.table) !== i) {
|
|
824
843
|
out.push({ path: at('table'), message: `"${entry.table}" is opened to forms by another entry already: one forms entry per table` });
|
|
825
844
|
}
|
|
@@ -965,7 +984,9 @@ export function publicAccessIssues(entries, ctx) {
|
|
|
965
984
|
out.push({ path: at('key'), message: `"${key}" is not one of the app's publicKeys` });
|
|
966
985
|
}
|
|
967
986
|
if (key === FORMS_KEY)
|
|
968
|
-
out.push(...formsEntryIssues(entry, i, entries, ctx.appKey));
|
|
987
|
+
out.push(...formsEntryIssues(entry, i, entries, ctx.appKey, index));
|
|
988
|
+
else if (entry.source !== undefined)
|
|
989
|
+
out.push({ path: at('source'), message: 'a source is said only on a forms entry (key "forms"): the column a form\'s fixed "Source" value goes into' });
|
|
969
990
|
for (const list of ['select', 'writable']) {
|
|
970
991
|
for (const ref of entry[list] ?? []) {
|
|
971
992
|
if (!has(entry.table, ref))
|