saft 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/pnpm-lock.yaml ADDED
@@ -0,0 +1,443 @@
1
+ lockfileVersion: 5.4
2
+
3
+ specifiers:
4
+ tailwindcss: ^3.2.4
5
+
6
+ dependencies:
7
+ tailwindcss: 3.2.4
8
+
9
+ packages:
10
+
11
+ /@nodelib/fs.scandir/2.1.5:
12
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
13
+ engines: {node: '>= 8'}
14
+ dependencies:
15
+ '@nodelib/fs.stat': 2.0.5
16
+ run-parallel: 1.2.0
17
+ dev: false
18
+
19
+ /@nodelib/fs.stat/2.0.5:
20
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
21
+ engines: {node: '>= 8'}
22
+ dev: false
23
+
24
+ /@nodelib/fs.walk/1.2.8:
25
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
26
+ engines: {node: '>= 8'}
27
+ dependencies:
28
+ '@nodelib/fs.scandir': 2.1.5
29
+ fastq: 1.14.0
30
+ dev: false
31
+
32
+ /acorn-node/1.8.2:
33
+ resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
34
+ dependencies:
35
+ acorn: 7.4.1
36
+ acorn-walk: 7.2.0
37
+ xtend: 4.0.2
38
+ dev: false
39
+
40
+ /acorn-walk/7.2.0:
41
+ resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
42
+ engines: {node: '>=0.4.0'}
43
+ dev: false
44
+
45
+ /acorn/7.4.1:
46
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
47
+ engines: {node: '>=0.4.0'}
48
+ hasBin: true
49
+ dev: false
50
+
51
+ /anymatch/3.1.3:
52
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
53
+ engines: {node: '>= 8'}
54
+ dependencies:
55
+ normalize-path: 3.0.0
56
+ picomatch: 2.3.1
57
+ dev: false
58
+
59
+ /arg/5.0.2:
60
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
61
+ dev: false
62
+
63
+ /binary-extensions/2.2.0:
64
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
65
+ engines: {node: '>=8'}
66
+ dev: false
67
+
68
+ /braces/3.0.2:
69
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
70
+ engines: {node: '>=8'}
71
+ dependencies:
72
+ fill-range: 7.0.1
73
+ dev: false
74
+
75
+ /camelcase-css/2.0.1:
76
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
77
+ engines: {node: '>= 6'}
78
+ dev: false
79
+
80
+ /chokidar/3.5.3:
81
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
82
+ engines: {node: '>= 8.10.0'}
83
+ dependencies:
84
+ anymatch: 3.1.3
85
+ braces: 3.0.2
86
+ glob-parent: 5.1.2
87
+ is-binary-path: 2.1.0
88
+ is-glob: 4.0.3
89
+ normalize-path: 3.0.0
90
+ readdirp: 3.6.0
91
+ optionalDependencies:
92
+ fsevents: 2.3.2
93
+ dev: false
94
+
95
+ /color-name/1.1.4:
96
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
97
+ dev: false
98
+
99
+ /cssesc/3.0.0:
100
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
101
+ engines: {node: '>=4'}
102
+ hasBin: true
103
+ dev: false
104
+
105
+ /defined/1.0.1:
106
+ resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
107
+ dev: false
108
+
109
+ /detective/5.2.1:
110
+ resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
111
+ engines: {node: '>=0.8.0'}
112
+ hasBin: true
113
+ dependencies:
114
+ acorn-node: 1.8.2
115
+ defined: 1.0.1
116
+ minimist: 1.2.7
117
+ dev: false
118
+
119
+ /didyoumean/1.2.2:
120
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
121
+ dev: false
122
+
123
+ /dlv/1.1.3:
124
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
125
+ dev: false
126
+
127
+ /fast-glob/3.2.12:
128
+ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
129
+ engines: {node: '>=8.6.0'}
130
+ dependencies:
131
+ '@nodelib/fs.stat': 2.0.5
132
+ '@nodelib/fs.walk': 1.2.8
133
+ glob-parent: 5.1.2
134
+ merge2: 1.4.1
135
+ micromatch: 4.0.5
136
+ dev: false
137
+
138
+ /fastq/1.14.0:
139
+ resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
140
+ dependencies:
141
+ reusify: 1.0.4
142
+ dev: false
143
+
144
+ /fill-range/7.0.1:
145
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
146
+ engines: {node: '>=8'}
147
+ dependencies:
148
+ to-regex-range: 5.0.1
149
+ dev: false
150
+
151
+ /fsevents/2.3.2:
152
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
153
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
154
+ os: [darwin]
155
+ requiresBuild: true
156
+ dev: false
157
+ optional: true
158
+
159
+ /function-bind/1.1.1:
160
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
161
+ dev: false
162
+
163
+ /glob-parent/5.1.2:
164
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
165
+ engines: {node: '>= 6'}
166
+ dependencies:
167
+ is-glob: 4.0.3
168
+ dev: false
169
+
170
+ /glob-parent/6.0.2:
171
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
172
+ engines: {node: '>=10.13.0'}
173
+ dependencies:
174
+ is-glob: 4.0.3
175
+ dev: false
176
+
177
+ /has/1.0.3:
178
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
179
+ engines: {node: '>= 0.4.0'}
180
+ dependencies:
181
+ function-bind: 1.1.1
182
+ dev: false
183
+
184
+ /is-binary-path/2.1.0:
185
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
186
+ engines: {node: '>=8'}
187
+ dependencies:
188
+ binary-extensions: 2.2.0
189
+ dev: false
190
+
191
+ /is-core-module/2.11.0:
192
+ resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
193
+ dependencies:
194
+ has: 1.0.3
195
+ dev: false
196
+
197
+ /is-extglob/2.1.1:
198
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
199
+ engines: {node: '>=0.10.0'}
200
+ dev: false
201
+
202
+ /is-glob/4.0.3:
203
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
204
+ engines: {node: '>=0.10.0'}
205
+ dependencies:
206
+ is-extglob: 2.1.1
207
+ dev: false
208
+
209
+ /is-number/7.0.0:
210
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
211
+ engines: {node: '>=0.12.0'}
212
+ dev: false
213
+
214
+ /lilconfig/2.0.6:
215
+ resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
216
+ engines: {node: '>=10'}
217
+ dev: false
218
+
219
+ /merge2/1.4.1:
220
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
221
+ engines: {node: '>= 8'}
222
+ dev: false
223
+
224
+ /micromatch/4.0.5:
225
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
226
+ engines: {node: '>=8.6'}
227
+ dependencies:
228
+ braces: 3.0.2
229
+ picomatch: 2.3.1
230
+ dev: false
231
+
232
+ /minimist/1.2.7:
233
+ resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
234
+ dev: false
235
+
236
+ /nanoid/3.3.4:
237
+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
238
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
239
+ hasBin: true
240
+ dev: false
241
+
242
+ /normalize-path/3.0.0:
243
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
244
+ engines: {node: '>=0.10.0'}
245
+ dev: false
246
+
247
+ /object-hash/3.0.0:
248
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
249
+ engines: {node: '>= 6'}
250
+ dev: false
251
+
252
+ /path-parse/1.0.7:
253
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
254
+ dev: false
255
+
256
+ /picocolors/1.0.0:
257
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
258
+ dev: false
259
+
260
+ /picomatch/2.3.1:
261
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
262
+ engines: {node: '>=8.6'}
263
+ dev: false
264
+
265
+ /pify/2.3.0:
266
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
267
+ engines: {node: '>=0.10.0'}
268
+ dev: false
269
+
270
+ /postcss-import/14.1.0_postcss@8.4.19:
271
+ resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
272
+ engines: {node: '>=10.0.0'}
273
+ peerDependencies:
274
+ postcss: ^8.0.0
275
+ dependencies:
276
+ postcss: 8.4.19
277
+ postcss-value-parser: 4.2.0
278
+ read-cache: 1.0.0
279
+ resolve: 1.22.1
280
+ dev: false
281
+
282
+ /postcss-js/4.0.0_postcss@8.4.19:
283
+ resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
284
+ engines: {node: ^12 || ^14 || >= 16}
285
+ peerDependencies:
286
+ postcss: ^8.3.3
287
+ dependencies:
288
+ camelcase-css: 2.0.1
289
+ postcss: 8.4.19
290
+ dev: false
291
+
292
+ /postcss-load-config/3.1.4_postcss@8.4.19:
293
+ resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
294
+ engines: {node: '>= 10'}
295
+ peerDependencies:
296
+ postcss: '>=8.0.9'
297
+ ts-node: '>=9.0.0'
298
+ peerDependenciesMeta:
299
+ postcss:
300
+ optional: true
301
+ ts-node:
302
+ optional: true
303
+ dependencies:
304
+ lilconfig: 2.0.6
305
+ postcss: 8.4.19
306
+ yaml: 1.10.2
307
+ dev: false
308
+
309
+ /postcss-nested/6.0.0_postcss@8.4.19:
310
+ resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==}
311
+ engines: {node: '>=12.0'}
312
+ peerDependencies:
313
+ postcss: ^8.2.14
314
+ dependencies:
315
+ postcss: 8.4.19
316
+ postcss-selector-parser: 6.0.11
317
+ dev: false
318
+
319
+ /postcss-selector-parser/6.0.11:
320
+ resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
321
+ engines: {node: '>=4'}
322
+ dependencies:
323
+ cssesc: 3.0.0
324
+ util-deprecate: 1.0.2
325
+ dev: false
326
+
327
+ /postcss-value-parser/4.2.0:
328
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
329
+ dev: false
330
+
331
+ /postcss/8.4.19:
332
+ resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==}
333
+ engines: {node: ^10 || ^12 || >=14}
334
+ dependencies:
335
+ nanoid: 3.3.4
336
+ picocolors: 1.0.0
337
+ source-map-js: 1.0.2
338
+ dev: false
339
+
340
+ /queue-microtask/1.2.3:
341
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
342
+ dev: false
343
+
344
+ /quick-lru/5.1.1:
345
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
346
+ engines: {node: '>=10'}
347
+ dev: false
348
+
349
+ /read-cache/1.0.0:
350
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
351
+ dependencies:
352
+ pify: 2.3.0
353
+ dev: false
354
+
355
+ /readdirp/3.6.0:
356
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
357
+ engines: {node: '>=8.10.0'}
358
+ dependencies:
359
+ picomatch: 2.3.1
360
+ dev: false
361
+
362
+ /resolve/1.22.1:
363
+ resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
364
+ hasBin: true
365
+ dependencies:
366
+ is-core-module: 2.11.0
367
+ path-parse: 1.0.7
368
+ supports-preserve-symlinks-flag: 1.0.0
369
+ dev: false
370
+
371
+ /reusify/1.0.4:
372
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
373
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
374
+ dev: false
375
+
376
+ /run-parallel/1.2.0:
377
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
378
+ dependencies:
379
+ queue-microtask: 1.2.3
380
+ dev: false
381
+
382
+ /source-map-js/1.0.2:
383
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
384
+ engines: {node: '>=0.10.0'}
385
+ dev: false
386
+
387
+ /supports-preserve-symlinks-flag/1.0.0:
388
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
389
+ engines: {node: '>= 0.4'}
390
+ dev: false
391
+
392
+ /tailwindcss/3.2.4:
393
+ resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==}
394
+ engines: {node: '>=12.13.0'}
395
+ hasBin: true
396
+ dependencies:
397
+ arg: 5.0.2
398
+ chokidar: 3.5.3
399
+ color-name: 1.1.4
400
+ detective: 5.2.1
401
+ didyoumean: 1.2.2
402
+ dlv: 1.1.3
403
+ fast-glob: 3.2.12
404
+ glob-parent: 6.0.2
405
+ is-glob: 4.0.3
406
+ lilconfig: 2.0.6
407
+ micromatch: 4.0.5
408
+ normalize-path: 3.0.0
409
+ object-hash: 3.0.0
410
+ picocolors: 1.0.0
411
+ postcss: 8.4.19
412
+ postcss-import: 14.1.0_postcss@8.4.19
413
+ postcss-js: 4.0.0_postcss@8.4.19
414
+ postcss-load-config: 3.1.4_postcss@8.4.19
415
+ postcss-nested: 6.0.0_postcss@8.4.19
416
+ postcss-selector-parser: 6.0.11
417
+ postcss-value-parser: 4.2.0
418
+ quick-lru: 5.1.1
419
+ resolve: 1.22.1
420
+ transitivePeerDependencies:
421
+ - ts-node
422
+ dev: false
423
+
424
+ /to-regex-range/5.0.1:
425
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
426
+ engines: {node: '>=8.0'}
427
+ dependencies:
428
+ is-number: 7.0.0
429
+ dev: false
430
+
431
+ /util-deprecate/1.0.2:
432
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
433
+ dev: false
434
+
435
+ /xtend/4.0.2:
436
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
437
+ engines: {node: '>=0.4'}
438
+ dev: false
439
+
440
+ /yaml/1.10.2:
441
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
442
+ engines: {node: '>= 6'}
443
+ dev: false
data/readme.md ADDED
@@ -0,0 +1,92 @@
1
+ # SAF-T (Standard Audit File for Tax)
2
+
3
+ SAF-T is developed by OECD (Organisation for Economic Co-operation and Development). v1.0 was shipped in 2005, v2.0 was shipped in 2010.
4
+
5
+ https://en.wikipedia.org/wiki/SAF-T
6
+
7
+ Skatteetaten = The norwegian tax administration
8
+
9
+ In Norway we use version v2.0 of the format, but Skatteetaten in Norway has make some modifications and released their own versioning starting on v1.0, but that was a continuation on v2.0. I believe the only changes are related to which nodes should be used for what, so 100% backward compatible for SAF-T v2.0.
10
+
11
+ This gem is developed to work in Norway but it should be possible to make it work for all SAF-T versions. We didn't implement all Nodes but it should be quite easy to add.
12
+
13
+ Tested and verified for: None yet, Norway is in development
14
+
15
+ Even if you are able to create a AuditFile instance it doesn't mean it is valid per the xsd. There are some nodes where you have to choose this set of nodes or this other set of nodes. It would be possible to create such a structure with dry-stuct as well but we would end up with a lot more Nodes, also a bigger difference on xml structure and structs.
16
+
17
+ ## Setup
18
+
19
+ ```rb
20
+ # if you use SAF-T to write xmls you probably want the files to be as compact as
21
+ # possible in production but nicely formatted in development end test.
22
+ # default value is AS_XML
23
+
24
+ if production
25
+ SAFT.nokogiri_save_setting = Nokogiri::XML::Node::SaveOptions::AS_XML
26
+ else
27
+ SAFT.nokogiri_save_setting = Nokogiri::XML::Node::SaveOptions::DEFAULT_XML
28
+ end
29
+ ```
30
+
31
+ ## Usage
32
+
33
+ ```rb
34
+ require "saft"
35
+
36
+ # read a SAF-T file
37
+
38
+ xml = File.read("saft.xml")
39
+ audit_file = SAFT::V2.parse(xml) # instance of SAFT::V2::Types::AuditFile or raises type errors
40
+ audit_file.header.company.name # name from xml
41
+
42
+ # create a SAF-T file
43
+ audit_file = SAFT::V2::Types::AuditFile.call({
44
+ header: {
45
+ audit_file_version: "1.10",
46
+ audit_file_country: "NO",
47
+ audit_file_date_created: Date.today,
48
+ # ...
49
+ }
50
+ })
51
+
52
+ xml_content = SAFT::V2.scribe(audit_file)
53
+ # it is recommended to validate against the xsd before taking it further because
54
+ # it is possible to create invalid xml
55
+ validations = SAFT::V2.validate(xml_content)
56
+ validations.valid? # true || false
57
+ validations.errors? # [] # array of Nokogiri::XML::SyntaxError from xsd errors
58
+ ```
59
+
60
+ We supply three types of AuditFile which all can be used to generate the xml.
61
+ Relaxed, Strict and Sliced. Relaxed does not have any constrains on text length
62
+ so you are more likely to have XSD errors this way. Strict has more constraints
63
+ in place, it would raise Dry::Struct::Error when called with invalid options.
64
+ And the last mode, Sliced. It would cut the string at max length available.
65
+
66
+ ## Norway
67
+
68
+ Main site for skatteetaten https://www.skatteetaten.no/en/business-and-organisation/start-and-run/best-practices-accounting-and-cash-register-systems/saf-t-financial/documentation/
69
+
70
+ Git repo from skatteetaten https://github.com/Skatteetaten/saf-t
71
+
72
+ SAF-T contains two formats, SAF-T Financial and SAF-T Cash Register.
73
+
74
+ Every electronic ERP system has to implement SAF-T Financial. SAF-T Cash
75
+ Register is either for the cash register to implement or the ERP, I don't know
76
+ yet. (I believe Cash Register since there should be event log which include
77
+ open drawer, copy receipt, etc)
78
+
79
+ ## Html
80
+
81
+ We also ship a render for html view. It also ships styles
82
+ ```rb
83
+ audit_file = SAFT::V2::Types::AuditFile.call({})
84
+ html = SAFT::V2.to_html(audit_file)
85
+ css = SAFT::V2::HTML.css
86
+ css_path = SAFT::V2::HTML.css_path
87
+ ```
88
+
89
+ ### Dev to rebuild styles
90
+ ```
91
+ pnpm tailwindcss -i lib/saft/v2/html.css -o ./lib/saft/v2/html_dist.css
92
+ ```
@@ -0,0 +1,10 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ content: [
4
+ "./lib/saft/v2/html.rb"
5
+ ],
6
+ theme: {
7
+ extend: {},
8
+ },
9
+ plugins: [],
10
+ }