@airmark/quiver 0.11.0 → 0.12.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airmark/quiver",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Airmark Quiver — Air Force and DAF document Quills for Quillmark.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -13,14 +13,14 @@
13
13
  "Quiver.yaml"
14
14
  ],
15
15
  "engines": {
16
- "node": ">=18"
16
+ "node": ">=24"
17
17
  },
18
18
  "devDependencies": {
19
- "@quillmark/quiver": "^0.6.0",
20
- "@quillmark/wasm": "0.66.2"
19
+ "@quillmark/quiver": "^0.7.0",
20
+ "@quillmark/wasm": "0.71.1"
21
21
  },
22
22
  "scripts": {
23
- "test": "node --test",
23
+ "test": "node --test quiver.test.js",
24
24
  "release:patch": "npm version patch -m \"chore(release): %s\" && git push --follow-tags",
25
25
  "release:minor": "npm version minor -m \"chore(release): %s\" && git push --follow-tags"
26
26
  },
@@ -11,85 +11,89 @@ main:
11
11
  hide_body: true
12
12
  fields:
13
13
  name:
14
- title: Name (Last, First, MI)
15
14
  type: string
16
15
  required: true
16
+ ui:
17
+ title: Name (Last, First, MI)
17
18
  description: Full name in Last, First, Middle Initial format.
18
19
 
19
20
  unit:
20
- title: Unit of Assignment
21
21
  type: string
22
22
  required: true
23
+ ui:
24
+ title: Unit of Assignment
23
25
  description: Unit or organization of assignment.
24
26
 
25
27
  grade:
26
- title: Grade/CCC Level
27
28
  type: string
29
+ ui:
30
+ title: Grade/CCC Level
28
31
  description: Current grade or CCC level.
29
32
 
30
33
  commanders_auth:
31
- title: Commander's Record of Authentication
32
34
  type: string
35
+ ui:
36
+ title: Commander's Record of Authentication
33
37
  description: Commander's authentication entry on page 1.
34
38
 
35
39
  card_types:
36
40
  experience:
37
- title: Record of Experience
38
41
  description: Each card represents one row in the Record of Experience table. Rows fill page 1 (up to 16 rows) then page 2 (up to 21 rows), for a maximum of 37 rows.
39
42
  ui:
43
+ title: Record of Experience
40
44
  hide_body: true
41
45
  fields:
42
46
  date:
43
- title: Date
44
47
  type: date
45
48
  ui:
49
+ title: Date
46
50
  group: Record
47
51
  description: Date of the action (column A).
48
52
 
49
53
  action:
50
- title: Mandatory Actions to be Reported
51
54
  type: string
52
55
  ui:
56
+ title: Mandatory Actions to be Reported
53
57
  group: Record
54
58
  description: One type of action per line (column B).
55
59
 
56
60
  written_grade:
57
- title: Written Grade
58
61
  type: string
59
62
  ui:
63
+ title: Written Grade
60
64
  group: Record
61
65
  compact: true
62
66
  description: Written grade, if applicable (column C).
63
67
 
64
68
  written_grade_date:
65
- title: Written Grade Date
66
69
  type: date
67
70
  default: ""
68
71
  ui:
72
+ title: Written Grade Date
69
73
  group: Record
70
74
  compact: true
71
75
  description: Date of written grade (column D). Omit or leave blank when there is no written grade.
72
76
 
73
77
  positional_grade:
74
- title: Positional Grade
75
78
  type: string
76
79
  ui:
80
+ title: Positional Grade
77
81
  group: Record
78
82
  compact: true
79
83
  description: Positional grade, if applicable (column E).
80
84
 
81
85
  positional_grade_date:
82
- title: Positional Grade Date
83
86
  type: date
84
87
  default: ""
85
88
  ui:
89
+ title: Positional Grade Date
86
90
  group: Record
87
91
  compact: true
88
92
  description: Date of positional grade (column F). Omit or leave blank when there is no positional grade.
89
93
 
90
94
  auth_or_remarks:
91
- title: Record of Authentication or Remarks
92
95
  type: string
93
96
  ui:
97
+ title: Record of Authentication or Remarks
94
98
  group: Record
95
99
  description: Authentication or remarks entry (column G).
@@ -11,45 +11,50 @@ main:
11
11
  hide_body: false
12
12
  fields:
13
13
  award:
14
- title: Award Program
15
14
  type: string
15
+ ui:
16
+ title: Award Program
16
17
  category_if_applicable:
17
- title: Award Category
18
18
  type: string
19
19
  ui:
20
+ title: Award Category
20
21
  compact: true
21
22
  award_period:
22
- title: Award Period
23
23
  type: string
24
24
  ui:
25
+ title: Award Period
25
26
  compact: true
26
27
  rankname_of_nominee:
27
- title: Nominee Rank & Name
28
28
  type: string
29
29
  ui:
30
+ title: Nominee Rank & Name
30
31
  compact: true
31
32
  majcom_fldcom_foa_or_dru:
32
- title: Command (MAJCOM/FLDCOM/FOA/DRU)
33
33
  type: string
34
34
  ui:
35
+ title: Command (MAJCOM/FLDCOM/FOA/DRU)
35
36
  compact: true
36
37
  dafsc_duty_title:
37
- title: DAFSC & Duty Title
38
38
  type: string
39
+ ui:
40
+ title: DAFSC & Duty Title
39
41
  nominees_telephone_dsn_commercial:
40
- title: Nominee Phone
41
42
  type: string
43
+ ui:
44
+ title: Nominee Phone
42
45
  unit_office_symbol_street_address_base_state_zip:
43
- title: Unit Mailing Address
44
46
  type: string
47
+ ui:
48
+ title: Unit Mailing Address
45
49
  unit_commander_rank_name_and_telephone:
46
- title: Unit Commander
47
50
  type: string
51
+ ui:
52
+ title: Unit Commander
48
53
 
49
54
  card_types:
50
55
  accomplishments_continued:
51
- title: Specific Accomplishments (Continued — Page 2)
52
56
  description: Optional. Add this card only when page 2 overflow is required. Use the card body for continued bullets. Rank/name on page 2 matches the main nominee line automatically.
53
57
  ui:
58
+ title: Specific Accomplishments (Continued — Page 2)
54
59
  hide_body: false
55
60
  fields: {}
@@ -11,129 +11,131 @@ main:
11
11
  hide_body: true
12
12
  fields:
13
13
  transportation_mode:
14
- title: Mode of Transportation
15
14
  type: string
16
15
  enum: [pmv, airplane, bus, train, motorcycle, other]
17
16
  required: true
17
+ ui:
18
+ title: Mode of Transportation
18
19
  description: "Matches the check box."
19
20
 
20
-
21
21
  departure_date:
22
- title: Departure Date
23
22
  type: date
24
23
  required: true
25
24
  ui:
25
+ title: Departure Date
26
26
  compact: true
27
27
  description: "Date of initial departure."
28
28
 
29
29
  final_destination:
30
- title: Final Destination
31
30
  type: string
32
31
  required: true
33
32
  ui:
33
+ title: Final Destination
34
34
  compact: true
35
35
  description: "Final travel destination."
36
36
 
37
37
  dept_flight_num:
38
- title: Departure Flight Number
39
38
  type: string
40
39
  ui:
40
+ title: Departure Flight Number
41
41
  compact: true
42
42
  description: "Departure flight number. (tenative or confirmed)"
43
43
 
44
44
  arrival_flight_num:
45
- title: Arrival Flight Number
46
45
  type: string
47
46
  ui:
47
+ title: Arrival Flight Number
48
48
  compact: true
49
49
  description: "Arrival flight number. (tenative or confirmed)"
50
50
 
51
51
  notes:
52
- title: Notes
53
52
  type: string
53
+ ui:
54
+ title: Notes
54
55
  description: "Additional notes or remarks for the travel."
55
56
 
56
57
  organization:
57
- title: Organization
58
58
  type: string
59
59
  required: true
60
60
  ui:
61
+ title: Organization
61
62
  compact: true
62
63
  description: "Unit / Organization."
63
64
 
64
65
  briefed_date:
65
- title: Date Briefed
66
66
  type: date
67
67
  required: true
68
68
  ui:
69
+ title: Date Briefed
69
70
  compact: true
70
71
  description: "Put in today's date."
71
72
 
72
73
  briefee_name:
73
- title: Individual Receiving Brief (Name)
74
74
  type: string
75
75
  required: true
76
76
  ui:
77
+ title: Individual Receiving Brief (Name)
77
78
  compact: true
78
79
  description: "Put in your Name (Last, First)."
79
80
 
80
81
  briefee_grade:
81
- title: Individual Receiving Brief (Grade)
82
82
  type: string
83
83
  ui:
84
+ title: Individual Receiving Brief (Grade)
84
85
  compact: true
85
86
  description: "Put in your Grade."
86
87
 
87
88
  emergency_contact_name:
88
- title: Emergency Contact Name
89
89
  type: string
90
+ ui:
91
+ title: Emergency Contact Name
90
92
  description: "Put in your Emergency Contact Name."
91
93
 
92
94
  emergency_contact_phone:
93
- title: Emergency Contact Phone
94
95
  type: string
96
+ ui:
97
+ title: Emergency Contact Phone
95
98
  description: "Put in your Emergency Contact's Phone Number."
96
99
 
97
100
  card_types:
98
101
  itinerary:
99
- title: Proposed Travel Itinerary
100
102
  description: "Each card represents one row in the travel itinerary table. Up to 10 rows are supported."
101
103
  ui:
104
+ title: Proposed Travel Itinerary
102
105
  hide_body: true
103
- default_title: Leg
104
106
  fields:
105
107
  date:
106
- title: Date
107
108
  type: date
108
109
  ui:
110
+ title: Date
109
111
  group: Itinerary Entry
110
112
  compact: true
111
113
  description: "Date for the itinerary row."
112
114
  departure_point:
113
- title: Departure Point
114
115
  type: string
115
116
  ui:
117
+ title: Departure Point
116
118
  group: Itinerary Entry
117
119
  compact: true
118
120
  description: "Point of departure."
119
121
  arrival_point:
120
- title: Arrival Point
121
122
  type: string
122
123
  ui:
124
+ title: Arrival Point
123
125
  group: Itinerary Entry
124
126
  compact: true
125
127
  description: "Point of arrival."
126
128
  rest_length:
127
- title: Length of Rest Period
128
129
  type: string
129
130
  ui:
131
+ title: Length of Rest Period
130
132
  group: Itinerary Entry
131
133
  compact: true
132
134
  description: "Duration of stay at arrival point"
133
135
  mileage:
134
- title: Approximate Mileage
135
136
  type: string
136
137
  ui:
138
+ title: Approximate Mileage
137
139
  group: Itinerary Entry
138
140
  compact: true
139
- description: "Approximate mileage for this leg (leave blank if not applicable, e.g., flights)."
141
+ description: "Approximate mileage for this leg (leave blank if not applicable, e.g., flights)."
@@ -9,171 +9,168 @@ quill:
9
9
  main:
10
10
  fields:
11
11
  memo_for:
12
- title: List of recipient organization(s)
13
12
  type: array
14
13
  required: true
15
- examples:
16
- - - ORG1/SYMBOL
17
- - ORG2/SYMBOL
14
+ example:
15
+ - ORG1/SYMBOL
16
+ - ORG2/SYMBOL
18
17
  ui:
18
+ title: List of recipient organization(s)
19
19
  group: Addressing
20
20
  description: "Organization/office symbol in UPPERCASE. To address a specific person, add their rank and name in parentheses (e.g., 'ORG/SYMBOL (LT COL JANE DOE)'). For numerous recipients, use 'DISTRIBUTION'."
21
21
 
22
22
  memo_from:
23
- title: "Sender information as array: [ORG/SYMBOL, 'Organization Name', 'Street Address', 'City State ZIP']"
24
23
  type: array
25
24
  required: true
26
- examples:
27
- - - ORG/SYMBOL
28
- - Organization Name
29
- - 123 Street Ave
30
- - City ST 12345-6789
25
+ example:
26
+ - ORG/SYMBOL
27
+ - Organization Name
28
+ - 123 Street Ave
29
+ - City ST 12345-6789
31
30
  ui:
31
+ title: "Sender information as array: [ORG/SYMBOL, 'Organization Name', 'Street Address', 'City State ZIP']"
32
32
  group: Addressing
33
33
  description: If recipients are on the same installation, use only the office symbol. For recipients on other installations, include the full mailing address to enable return correspondence.
34
34
 
35
35
  subject:
36
- title: Subject of the memo
37
36
  type: string
38
37
  required: true
39
- examples:
40
- - Subject of the Memorandum
38
+ example: Subject of the Memorandum
41
39
  ui:
40
+ title: Subject of the memo
42
41
  group: Addressing
43
42
  description: Be brief and clear. Capitalize the first letter of each word except articles, prepositions, and conjunctions. Include suspense dates in parentheses if applicable.
44
43
 
45
44
  signature_block:
46
- title: Signature block lines
47
45
  type: array
48
46
  required: true
49
- examples:
50
- - - "FIRST M. LAST, Rank, USSF"
51
- - Duty Title
47
+ example:
48
+ - "FIRST M. LAST, Rank, USSF"
49
+ - Duty Title
52
50
  ui:
51
+ title: Signature block lines
53
52
  group: Addressing
54
53
  description: "Line 1: Name in UPPERCASE as signed, grade, and service. Line 2: Duty title. Spell out 'Colonel' and general officer ranks."
55
54
 
56
55
  letterhead_title:
57
- title: Title in letterhead
58
56
  type: string
59
57
  default: DEPARTMENT OF THE AIR FORCE
60
58
  ui:
59
+ title: Title in letterhead
61
60
  group: Letterhead
62
61
  description: Standard title. Only change for Joint Commands or DoW Agencies.
63
62
 
64
63
  letterhead_caption:
65
- title: Letterhead caption line(s)
66
64
  type: array
67
65
  default:
68
66
  - HEADQUARTERS [UNIT NAME]
69
67
  ui:
68
+ title: Letterhead caption line(s)
70
69
  group: Letterhead
71
70
  description: The full organization name of your unit.
72
71
 
73
72
  letterhead_seal:
74
- title: Letterhead seal
75
73
  type: string
76
74
  enum:
77
75
  - dow
78
76
  - dod
79
77
  default: dow
80
78
  ui:
79
+ title: Letterhead seal
81
80
  group: Letterhead
82
81
  compact: true
83
82
  description: Department of War (DoW) or Department of Defense (DoD) seal shown in the letterhead.
84
83
 
85
84
  letterhead_seal_subtitle:
86
- title: Subtitle under letterhead seal
87
85
  type: string
88
86
  default: ""
89
87
  ui:
88
+ title: Subtitle under letterhead seal
90
89
  group: Letterhead
91
90
  compact: true
92
91
  description: Optional line below the DoW seal (bold caps). Leave blank to omit.
93
92
 
94
93
  tag_line:
95
- title: Tag line at bottom of memo
96
94
  type: string
97
95
  default: ""
98
96
  ui:
97
+ title: Tag line at bottom of memo
99
98
  group: Letterhead
100
99
  description: Organizational motto at the bottom of the page.
101
100
 
102
101
  references:
103
- title: References for the memo
104
102
  type: array
105
103
  default: []
106
- examples:
107
- - - "AFM 33-326, 31 July 2019, Preparing Official Communications"
104
+ example:
105
+ - "AFM 33-326, 31 July 2019, Preparing Official Communications"
108
106
  ui:
107
+ title: References for the memo
109
108
  group: Additional
110
109
  description: "Cite by organization, type, date, and title."
111
110
 
112
111
  cc:
113
- title: Carbon copy recipients
114
112
  type: array
115
113
  default: []
116
- examples:
117
- - - Rank and Name, ORG/SYMBOL
114
+ example:
115
+ - Rank and Name, ORG/SYMBOL
118
116
  ui:
117
+ title: Carbon copy recipients
119
118
  group: Additional
120
119
  description: List office symbols of recipients to receive copies.
121
120
 
122
121
  distribution:
123
- title: Distribution list. Used when "SEE DISTRIBUTION" is specified in `memo_for`.
124
122
  type: array
125
123
  default: []
126
- examples:
127
- - - ORG1/SYMBOL
128
- - ORG2/SYMBOL
124
+ example:
125
+ - ORG1/SYMBOL
126
+ - ORG2/SYMBOL
129
127
  ui:
128
+ title: Distribution list. Used when "SEE DISTRIBUTION" is specified in `memo_for`.
130
129
  group: Additional
131
130
  description: Complete list of recipients if 'SEE DISTRIBUTION' is used in the 'Memo For' field.
132
131
 
133
132
  attachments:
134
- title: List of attachments
135
133
  type: array
136
134
  default: []
137
- examples:
138
- - - Attachment description, YYYY MMM DD
135
+ example:
136
+ - Attachment description, YYYY MMM DD
139
137
  ui:
138
+ title: List of attachments
140
139
  group: Additional
141
140
  description: List attachments in the order they are mentioned in the memo. Briefly describe each; do not use 'as stated' or abbreviations.
142
-
141
+
143
142
  memo_style:
144
- title: Memorandum style
145
143
  type: string
146
144
  enum:
147
145
  - usaf
148
146
  - daf
149
147
  default: usaf
150
148
  ui:
149
+ title: Memorandum style
151
150
  group: Additional
152
151
  compact: true
153
152
  description: "USAF memorandum (default) or DAF headquarters memorandum. DAF changes date formatting and body paragraph layout per AFH 33-337."
154
153
 
155
154
  font_size:
156
- title: Font size for the memo text (pt)
157
155
  type: number
158
156
  default: 12
159
- examples:
160
- - 12
161
- - 11.5
157
+ example: 12
162
158
  ui:
159
+ title: Font size for the memo text (pt)
163
160
  group: Additional
164
161
  compact: true
165
162
  description: Font size for the memo text (pt). Decimal values (e.g. 11.5) are supported.
166
163
 
167
164
  date:
168
- title: Date of memo (YYYY-MM-DD); defaults to today
169
165
  type: date
170
166
  default: ""
171
167
  ui:
168
+ title: Date of memo (YYYY-MM-DD); defaults to today
172
169
  group: Additional
173
170
  compact: true
174
171
  description: YYYY-MM-DD. Leave blank to use today's date.
172
+
175
173
  classification:
176
- title: Classification level of the memo that displays in the banner
177
174
  type: string
178
175
  enum:
179
176
  - ""
@@ -184,64 +181,65 @@ main:
184
181
  - TOP SECRET
185
182
  default: ""
186
183
  ui:
184
+ title: Classification level of the memo that displays in the banner
187
185
  group: Additional
188
186
  compact: true
189
187
  description: "Select the classification marking displayed in the header/footer banner. Banner colors follow DoD/CAPCO marking guidance (UNCLASSIFIED green, CUI/CONFIDENTIAL black, SECRET red, TOP SECRET orange). Follow AFI 31-401 and applicable DoD guidance. Leave blank to omit the banner."
190
188
 
191
189
  dissemination:
192
- title: Dissemination control marking (portion after //)
193
190
  type: string
194
191
  default: ""
195
192
  ui:
193
+ title: Dissemination control marking (portion after //)
196
194
  group: Additional
197
195
  compact: true
198
196
  description: "Optional marking appended after double slash (e.g. NF with classification CUI renders as CUI//NF). Leave blank to show only the classification with no //."
199
-
197
+
200
198
  card_types:
201
199
  indorsement:
202
- title: Routing indorsement
203
200
  description: Chain of routing endorsements. Each endorsement block adds an official response or forwarding action to the original memo.
201
+ ui:
202
+ title: Routing indorsement
204
203
  fields:
205
204
  from:
206
- title: From office/symbol
207
205
  type: string
208
206
  default: ORG/SYMBOL
209
207
  ui:
208
+ title: From office/symbol
210
209
  group: Addressing
211
210
  description: "Office symbol or Rank Name of the endorsing official (e.g., 'ORG/SYMBOL')."
212
211
  for:
213
- title: To office/symbol
214
212
  type: string
215
213
  default: ORG/SYMBOL
216
214
  ui:
215
+ title: To office/symbol
217
216
  group: Addressing
218
217
  description: Office symbol or organization receiving the endorsed memo.
219
218
  signature_block:
220
- title: Signature block lines
221
219
  type: array
222
- examples:
223
- - - "FIRST M. LAST, Rank, USAF"
224
- - Duty Title
225
- ui:
226
- group: Addressing
227
- description: "Line 1: Name in UPPERCASE as signed, grade, and service. Line 2: Duty title."
228
220
  required: true
229
221
  default:
230
222
  - "FIRST M. LAST, Rank, USAF"
231
223
  - Duty Title
224
+ example:
225
+ - "FIRST M. LAST, Rank, USAF"
226
+ - Duty Title
227
+ ui:
228
+ title: Signature block lines
229
+ group: Addressing
230
+ description: "Line 1: Name in UPPERCASE as signed, grade, and service. Line 2: Duty title."
232
231
  format:
233
- title: Indorsement format
234
232
  type: string
235
233
  enum:
236
234
  - standard
237
235
  - informal
238
236
  - separate_page
237
+ default: standard
239
238
  ui:
239
+ title: Indorsement format
240
240
  group: Additional
241
241
  description: "Format style: 'standard' (formal on same page), 'informal' (less formal routing), or 'separate_page' (starts on new page)."
242
- default: standard
243
242
  action:
244
- title: Action Decision
245
243
  type: string
246
244
  enum:
247
245
  - none
@@ -249,23 +247,24 @@ card_types:
249
247
  - approve
250
248
  - disapprove
251
249
  ui:
250
+ title: Action Decision
252
251
  group: Addressing
253
252
  description: "Action taken by the endorser. Use 'none' to hide the Approve/Disapprove line entirely, 'undecided' to display the line with neither option circled, 'approve' or 'disapprove' to circle the selected option."
254
253
  attachments:
255
- title: Attachments for this endorsement
256
254
  type: array
257
255
  ui:
256
+ title: Attachments for this endorsement
258
257
  group: Additional
259
258
  description: List of attachments specific to this endorsement.
260
259
  cc:
261
- title: Carbon copy recipients
262
260
  type: array
263
261
  ui:
262
+ title: Carbon copy recipients
264
263
  group: Additional
265
264
  description: List of office symbols to receive copies of this endorsement.
266
265
  date:
267
- title: Date of endorsement (YYYY-MM-DD); defaults to today
268
266
  type: date
269
267
  ui:
268
+ title: Date of endorsement (YYYY-MM-DD); defaults to today
270
269
  group: Additional
271
270
  description: "YYYY-MM-DD. Date the endorser signs/forwards the memo (per AFH 33-337 Ch. 14, this is distinct from the originating memo's date). Leave blank to use today's date."
@@ -21,7 +21,7 @@
21
21
 
22
22
  #let DEFAULT_LETTERHEAD_FONTS = ("Copperplate CC", "NimbusRomNo9L", "times new roman")
23
23
  #let DEFAULT_BODY_FONTS = ("NimbusRomNo9L", "times new roman") // AFH 33-337 §5: Times New Roman required
24
- #let LETTERHEAD_COLOR = rgb("#204093") // Faded USAF blue for letterhead
24
+ #let LETTERHEAD_COLOR = rgb("#355e93") // Faded USAF blue for letterhead
25
25
 
26
26
  // =============================================================================
27
27
  // PARAGRAPH CONFIGURATION