mirror of
https://github.com/standardnotes/server
synced 2026-04-20 02:02:30 -04:00
Compare commits
1249 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e94b0d0b02 | |||
| ed1bf37287 | |||
| 3946f56261 | |||
| fc53dab007 | |||
| e836abdef7 | |||
| 826482b1f0 | |||
| 45bd00919c | |||
| 4e1bae6daf | |||
| 8f23c8ab3f | |||
| 4d32f26631 | |||
| c11abe1bd3 | |||
| 4d12566b0d | |||
| 2200dca69d | |||
| d41dd3bdda | |||
| c5c24b3ac9 | |||
| 462ade2145 | |||
| bfef16ce37 | |||
| aa4351c8e9 | |||
| 2dff6a2ed3 | |||
| 7808cc8ed2 | |||
| 5b84f078c6 | |||
| cf5f44a4a5 | |||
| ed05ea553f | |||
| 4418c38878 | |||
| 6391a01b57 | |||
| 9dbcec198d | |||
| 78fbeb595f | |||
| d894a87e87 | |||
| 4f62cac213 | |||
| ce081274da | |||
| fd997f4849 | |||
| 3ddd671c47 | |||
| c19de13cac | |||
| f65809ef30 | |||
| 2823ed8612 | |||
| 420bf9ec54 | |||
| 5f67e5efda | |||
| daed1a77a0 | |||
| b39eb09d91 | |||
| f6ec8626e5 | |||
| 97b12f2131 | |||
| 8e4e36513a | |||
| c8bf4ab3a0 | |||
| 3fa01a328b | |||
| 60686dcdbd | |||
| fddd17e531 | |||
| f99750169f | |||
| daad76d0dd | |||
| b3542e2fab | |||
| a9b1543e20 | |||
| e6d8e5c5f2 | |||
| c24353cc24 | |||
| 4855e1d5f5 | |||
| 5d3fb9a537 | |||
| b55d80a7cd | |||
| 16f92bdc99 | |||
| 4c5738416a | |||
| 45d4920e0f | |||
| 94e738532a | |||
| c4ae12d53f | |||
| 4ff78452f9 | |||
| 9465f2ecd8 | |||
| 93c2f1f12f | |||
| ca8a3fc77d | |||
| 00936e06bc | |||
| a6dea50d74 | |||
| 28b04e6a4a | |||
| d228a86f48 | |||
| 0cb234aa47 | |||
| 6b554c28b7 | |||
| 8a0accd8ea | |||
| d66ae62cf4 | |||
| b01d1c659d | |||
| 751f3b2547 | |||
| 11514e3836 | |||
| 71689c1497 | |||
| 2742075edc | |||
| 7f16232f8b | |||
| 0b0703e6d1 | |||
| 3e376c44e3 | |||
| bfe2d4bb4a | |||
| 7253a0a1d9 | |||
| f2c5810023 | |||
| 2e5b9105b8 | |||
| d14411d72e | |||
| 5226513b26 | |||
| 334449f8aa | |||
| 7f43d0c69d | |||
| 6f18276e7a | |||
| 9ff18a18a5 | |||
| 999e72fb1f | |||
| 4733e663a3 | |||
| b48eeb16c3 | |||
| 0aa2584e82 | |||
| eb8c704d84 | |||
| e93fa14703 | |||
| 16a6815b69 | |||
| b08e9731b8 | |||
| 9bd4fb2d79 | |||
| 647aeda1de | |||
| 78ff748d91 | |||
| 31f8cf1169 | |||
| 14bcf7b6c9 | |||
| 74adddd1e7 | |||
| 0e43bc0042 | |||
| b40d539611 | |||
| 654663d17f | |||
| 75830c3a98 | |||
| 1b5078eb96 | |||
| a5e019e290 | |||
| a812f3400a | |||
| 15af5635f0 | |||
| cee6d62791 | |||
| 6aee51bd45 | |||
| 599a84e634 | |||
| 1c3d19cca4 | |||
| 9986e8e7ce | |||
| e19f7a7b7f | |||
| d570146378 | |||
| 8a9e4370e5 | |||
| ce357679e9 | |||
| acab402747 | |||
| e385926046 | |||
| e9b8d0ceb7 | |||
| a2c1ebe675 | |||
| 3ef8e9ea24 | |||
| c99334889c | |||
| 7ce9aba517 | |||
| 46257a058b | |||
| 979dc35cfc | |||
| c99a447a04 | |||
| 6dd9fd5abd | |||
| 0d37cb293c | |||
| 27d04c95a1 | |||
| cd830cdf25 | |||
| 5b06ea94f9 | |||
| aba4f90485 | |||
| 350621ed52 | |||
| 69b4324c78 | |||
| b2be0a7c0b | |||
| cab0dfba39 | |||
| 296ca47d63 | |||
| 1cad18a681 | |||
| bdd052f90c | |||
| 32fe8d0a85 | |||
| 31338066ef | |||
| 07398169c8 | |||
| 1632c83217 | |||
| 0c29ff1ab4 | |||
| 2a8029ba02 | |||
| 337eae73c6 | |||
| 0a90502658 | |||
| 1246af2551 | |||
| e0b19ef011 | |||
| 63201934a5 | |||
| 4a6f90b95b | |||
| a747f4fc46 | |||
| b782cedc85 | |||
| 7435a7ebba | |||
| 48c6d97d69 | |||
| 9a45aeb3e6 | |||
| 72c9b28ebe | |||
| 9cf271a5f2 | |||
| 1d280028a6 | |||
| 5f24b59025 | |||
| 9169e2bf3f | |||
| 13467d52cf | |||
| af5ebb25e7 | |||
| 25a875cbbc | |||
| 78b13261bf | |||
| 6356fcaeed | |||
| 443235a861 | |||
| 95fccb0822 | |||
| 1fa476d1f9 | |||
| 88b888cd25 | |||
| e3eede72cf | |||
| efb341eb99 | |||
| dae7dc9541 | |||
| 29e573e9b5 | |||
| 3df14149f0 | |||
| 6ba1867781 | |||
| 1026ce383c | |||
| 2795cefc1b | |||
| 637593c1bc | |||
| 08f7c5447b | |||
| 051b6e3093 | |||
| 250c1f069b | |||
| 3e4a1e9645 | |||
| 4629580650 | |||
| c29f6b9c6f | |||
| 036317e333 | |||
| 4afe32650f | |||
| c021bb3d7c | |||
| 783fd9e2c6 | |||
| d789c67649 | |||
| 3ab29569db | |||
| 099c6e10c6 | |||
| 76ae6f5a88 | |||
| 9bd2b0c953 | |||
| 3fc07a5b60 | |||
| 94e18ab36b | |||
| 1c54d18c3c | |||
| d2efa73fd7 | |||
| b47c80cccd | |||
| b72e515931 | |||
| 65fcc657a7 | |||
| 65ced2cc7b | |||
| af17698334 | |||
| 5e930d08eb | |||
| 0c89d8bd2d | |||
| cb23506c1f | |||
| bf9072dbd4 | |||
| 6abdd73a31 | |||
| 421b5c5487 | |||
| 465530841f | |||
| 0057a5d6ff | |||
| b736dab3c1 | |||
| 951d965304 | |||
| 29e8de3238 | |||
| eeeacabaa8 | |||
| 51ca8229b8 | |||
| a6a19a391e | |||
| f6cdb7916c | |||
| eafb064d79 | |||
| ba050681f7 | |||
| 4780629549 | |||
| 79a44aa51f | |||
| dd72769841 | |||
| d8f1c66fd5 | |||
| afe9967d26 | |||
| 27bea444cc | |||
| 7a571dec0a | |||
| 8c57f505be | |||
| 973612bf4f | |||
| 702a1286eb | |||
| a45b5b69b5 | |||
| 321353f26c | |||
| db4607d4aa | |||
| f0531d68cb | |||
| 8a00d159a6 | |||
| d244cc0d5f | |||
| 6a2aa4b148 | |||
| 3ee49416f8 | |||
| ae1e86e19f | |||
| 9f76e389e2 | |||
| 6e2240e60c | |||
| cd37c951bb | |||
| c4c3dfb823 | |||
| c4b6f17ebc | |||
| 71ce938cb1 | |||
| dc76113915 | |||
| 6583ff6cd9 | |||
| 69ea947857 | |||
| eab78b3a95 | |||
| 3097f7f063 | |||
| 126989df82 | |||
| a25eb178c5 | |||
| 18dae26b8e | |||
| 5bc8157d4d | |||
| f29826e917 | |||
| ba7cbb989b | |||
| d4579ce21e | |||
| ed14d2dfb7 | |||
| 64f1fe59c2 | |||
| 207ef9f3e5 | |||
| 3ea0435459 | |||
| 7668713dd6 | |||
| f6bc1c3084 | |||
| 4203ff9a0c | |||
| 0281724196 | |||
| 94bd319279 | |||
| 373cfad1f7 | |||
| 59107f8553 | |||
| e066b6a126 | |||
| a0e4926135 | |||
| b1b244a2cf | |||
| b4a38d9dcc | |||
| 71e2a4187e | |||
| c94f9c1a60 | |||
| b9907924be | |||
| d4c188c096 | |||
| 2ccaf490df | |||
| cd893b41d7 | |||
| 3838358081 | |||
| 1a388f00c3 | |||
| bd71422fab | |||
| 3e1697f47f | |||
| 032cde7723 | |||
| 34b956b482 | |||
| 681e0378ae | |||
| 609e85f926 | |||
| e4ca310707 | |||
| d606493356 | |||
| 5ef6c5c14a | |||
| 0188f290f9 | |||
| 676cf36f8d | |||
| f8aef6c8ef | |||
| 5bf8cf49c1 | |||
| 51cd0a4dad | |||
| 1d06ffe9d5 | |||
| dbf532f55e | |||
| ca6dbc0053 | |||
| 1bb5980b45 | |||
| a02a28774b | |||
| 2d9b3578b6 | |||
| 3d5e747590 | |||
| 94467747ac | |||
| cebab59a02 | |||
| 09e1a892ca | |||
| 7b1eec21e5 | |||
| a58262d584 | |||
| a8f03e157b | |||
| a401962bcd | |||
| 9759814f63 | |||
| c7cf53722c | |||
| 8cb33dc906 | |||
| 1d73e4f072 | |||
| 0a0f82ea3d | |||
| f9b1f40ddf | |||
| 0562b0a621 | |||
| 15ed1fd789 | |||
| 5001496c7b | |||
| 0a1080ce2a | |||
| 4802d7e876 | |||
| bcd95cdbe9 | |||
| d50c4440c2 | |||
| 921c30f641 | |||
| 22540ee834 | |||
| 4f4443a882 | |||
| 80dbacf933 | |||
| dc77ff3e45 | |||
| 6515dcf487 | |||
| d0fd6b98df | |||
| 345efacb44 | |||
| d0dba1b66d | |||
| da119af8b2 | |||
| a5da42bddd | |||
| 12767237d2 | |||
| 230c96dcf1 | |||
| e2696fcd1a | |||
| a621cf1e3b | |||
| db35b9fcab | |||
| 880db1038a | |||
| 414b090efb | |||
| 41e2136bc0 | |||
| 378ecedfcc | |||
| 06d4200909 | |||
| 22a8cc90f1 | |||
| 5cf84e31b0 | |||
| 31e7aaf253 | |||
| 8ec3d37c18 | |||
| 857c6af946 | |||
| de081fe786 | |||
| 0aeeb2d1cf | |||
| e589029722 | |||
| b265a39b63 | |||
| ed5cfd86db | |||
| a1a3e9f586 | |||
| a40b17b141 | |||
| 18181ed9df | |||
| 0ae028db73 | |||
| 79971be672 | |||
| e4fcd738c3 | |||
| 6827e5e218 | |||
| b91cd7e232 | |||
| 735d89cdaa | |||
| e8db412bc2 | |||
| bf855bb26e | |||
| 41cd377145 | |||
| d798864caf | |||
| cef1998f0e | |||
| c2cbf44594 | |||
| de2e167582 | |||
| 547a79e231 | |||
| 5a3afb3b17 | |||
| 66ef4be656 | |||
| c5d0d63ddd | |||
| 36f07c691a | |||
| ac0390e7c3 | |||
| 0477507a6a | |||
| 3e7856c895 | |||
| 6778a80f21 | |||
| d4d49454a6 | |||
| 04b52e6773 | |||
| 2a1859e4be | |||
| dd9a9c68cb | |||
| 9147ff5d49 | |||
| 503b84531b | |||
| fe8ca828fb | |||
| 03a4a3f2ab | |||
| 3a8607d146 | |||
| 93b6e65554 | |||
| 5984e4c3e7 | |||
| b4257c10ea | |||
| c164bde847 | |||
| 883df939dd | |||
| c7807d0f9e | |||
| fc90343aaa | |||
| fbcb45c3a2 | |||
| 179d8eaaa1 | |||
| 38685c1861 | |||
| cdf42fbe2d | |||
| 9be4c002b7 | |||
| a16c5307a0 | |||
| d5536f5430 | |||
| b1d88b15be | |||
| ff78285e43 | |||
| 1a26221385 | |||
| 54113abe2a | |||
| afe385aed4 | |||
| f055e52e06 | |||
| fab5d18064 | |||
| a1e654a0d0 | |||
| aa835268ea | |||
| 74b4312928 | |||
| e91a832152 | |||
| 4f95bbee3f | |||
| b9c9f74d0c | |||
| e535cd504c | |||
| db0360860a | |||
| aa2b5f3b74 | |||
| 6241661e27 | |||
| 25047bf46d | |||
| a1820ed212 | |||
| 0a1d1624e8 | |||
| 7367de6832 | |||
| f0abfe89fc | |||
| d1244d165a | |||
| 106d8f9192 | |||
| 1d86ba8fcb | |||
| f20a947f8a | |||
| 19b9de05ae | |||
| 1d751c0fbe | |||
| fa2564e164 | |||
| 330bff0124 | |||
| ca57c8e7b5 | |||
| a82b9a0c8a | |||
| ea7e9d73c4 | |||
| 117b7b4b99 | |||
| b4bf11d9da | |||
| 0306e10469 | |||
| 0ab47013f2 | |||
| 836883b82d | |||
| ed671be9c5 | |||
| 9676a2586c | |||
| e95ba61c7f | |||
| a0718aea26 | |||
| 156fa7a618 | |||
| 8d006ece30 | |||
| 037c994040 | |||
| a164ba291d | |||
| 610fba2601 | |||
| 398338c8f8 | |||
| 34be157d8e | |||
| 76372fe357 | |||
| 46879c336b | |||
| aef9e936bd | |||
| 8cb92d9678 | |||
| 52db89de81 | |||
| c5af8dfc05 | |||
| 27ad8e6959 | |||
| c4a1502f70 | |||
| d1d6c753c4 | |||
| 3bd63f7674 | |||
| 376466d9b2 | |||
| e100c52bbc | |||
| d4830dec01 | |||
| 7e11821021 | |||
| 4715e019a2 | |||
| 794cd8734a | |||
| 14d42b26bb | |||
| 6bb44afd91 | |||
| c82345aeeb | |||
| 72ab08a0d0 | |||
| f2d1b47e40 | |||
| d9ee2c5be2 | |||
| eb59902cf7 | |||
| 002074e4d1 | |||
| 45b55068f9 | |||
| 157eee5d93 | |||
| d5f2b4f6eb | |||
| a7a93497e8 | |||
| 8f96f0ed7a | |||
| 3f064176f2 | |||
| c7b0c7dfa8 | |||
| df20dd46db | |||
| 6dfd09989e | |||
| fc821709e2 | |||
| e986abaab5 | |||
| a006fb3119 | |||
| 2af812eaf1 | |||
| d13c975f94 | |||
| 1f7e4dd184 | |||
| 8b04216998 | |||
| 27ff25b70e | |||
| dc3a41e4bb | |||
| 94448bb5d8 | |||
| 9a568b0f73 | |||
| a1ee491dc5 | |||
| e5c118c262 | |||
| 1bef1279e6 | |||
| c511f259c7 | |||
| f77ed8ef94 | |||
| a4929af2ee | |||
| 095811dda9 | |||
| 480d5879ba | |||
| c0722b173b | |||
| f07c8e4bd4 | |||
| baf4b2c1d2 | |||
| a6039bd99a | |||
| 7c0010c902 | |||
| 596a0f1a02 | |||
| efda3df09b | |||
| ec35f46d45 | |||
| c64fa2f47c | |||
| 6ce42a0101 | |||
| d40c74c072 | |||
| d722206916 | |||
| 19e4c8bf5e | |||
| ee656b868b | |||
| 5e79d28bbf | |||
| 25ffd6b803 | |||
| a08fe8087f | |||
| fe273a9107 | |||
| 06170d8d7d | |||
| 62d231ae41 | |||
| 4a72097921 | |||
| 23b8cdc4a1 | |||
| 2646b756a9 | |||
| 28e058c6e8 | |||
| 8dea171115 | |||
| aef9254713 | |||
| 31b7396006 | |||
| be0a2649da | |||
| bf8f91f83d | |||
| effdfebc19 | |||
| f4816e6c9a | |||
| 152a5cbd27 | |||
| 1488763115 | |||
| bbb35d16fc | |||
| ef07045ee9 | |||
| 3ba673b424 | |||
| 9c4032ebea | |||
| 05bb12c978 | |||
| df957f07e3 | |||
| b510284e01 | |||
| 205a1ed637 | |||
| 2073c735a5 | |||
| 34085ac6fb | |||
| 3d6559921b | |||
| 15a7f0e71a | |||
| 3e56243d6f | |||
| 032fcb938d | |||
| e98393452b | |||
| 302b624504 | |||
| e00d9d2ca0 | |||
| 9ab4601c8d | |||
| 19e43bdb1a | |||
| 49832e7944 | |||
| 916e98936a | |||
| 31d1eef7f7 | |||
| 2648d9a813 | |||
| b24b576209 | |||
| faee38bffd | |||
| 65f3503fe8 | |||
| 054023b791 | |||
| 383c3a68fa | |||
| 7d22b1c15c | |||
| c71e7cd926 | |||
| 83ad069c5d | |||
| 081108d9ba | |||
| 8f3df56a2b | |||
| d02124f4e5 | |||
| 09e351fedb | |||
| ad4b85b095 | |||
| 0bf7d8beae | |||
| 1ae7cca394 | |||
| bc1c7a8ae1 | |||
| c22c5e4584 | |||
| ac3646836c | |||
| 7a31ab75d6 | |||
| c49dc35ab5 | |||
| 06cedd11d8 | |||
| f496376fb3 | |||
| 091e2a57e8 | |||
| 0d40ef6796 | |||
| 1be33ba4c3 | |||
| aaeb311928 | |||
| a7a38c07ac | |||
| 56f49752b4 | |||
| 892d8b6fe2 | |||
| cec2005436 | |||
| 0eb86c0096 | |||
| b8e39d76c1 | |||
| 1c3ff526b7 | |||
| 373767248c | |||
| d7965b2748 | |||
| cbcd2ec87a | |||
| c74d37fc48 | |||
| 66f9352a06 | |||
| e5eef3aba0 | |||
| d261c81cd0 | |||
| 634e3bbb67 | |||
| f8c9e67063 | |||
| 18eddea6f8 | |||
| c6d655c5f5 | |||
| 46867c1a4d | |||
| d29903bab6 | |||
| 3415cae093 | |||
| 408fd5a0c6 | |||
| 0a16ee64fe | |||
| 22b00479b4 | |||
| 5311e74266 | |||
| 5be7db7788 | |||
| 3bd1547ce3 | |||
| a1fe15f7a9 | |||
| 19b8921f28 | |||
| 6b7879ba15 | |||
| bd5f492a73 | |||
| 67311cc002 | |||
| f39d3aca5b | |||
| 8e47491e3c | |||
| 0036d527bd | |||
| f565f1d950 | |||
| 8e35dfa4b7 | |||
| f911473be9 | |||
| 71624f1897 | |||
| 17de6ea7e1 | |||
| 6aad7cd207 | |||
| 63af335877 | |||
| 8cd7a138ab | |||
| f69cdc7b03 | |||
| 2ca649cf31 | |||
| f2ada08201 | |||
| 54ba1f69e5 | |||
| f13a99f5fd | |||
| e9bba6fd3a | |||
| f0d1a70c87 | |||
| 56f0aef21d | |||
| 75e266cb9e | |||
| b9bb83c0ce | |||
| da645c5ab3 | |||
| 318af5757d | |||
| b1cc156a25 | |||
| 79d71ca161 | |||
| cedd50b366 | |||
| 0d5dcdd8ec | |||
| d2b0fb144b | |||
| 053852b46c | |||
| 6ad349d379 | |||
| f7d33c7164 | |||
| b53b67328f | |||
| 573ffbfcf3 | |||
| 501ac0e99f | |||
| 959a11293a | |||
| fee1f1a3a7 | |||
| b0fbe0bb58 | |||
| 0087c70007 | |||
| 36e496dd7c | |||
| f2e2030e85 | |||
| 0c3737dc19 | |||
| f7471119e1 | |||
| 9bd97b95e9 | |||
| b7400c198f | |||
| f87036e3a8 | |||
| a43e5ef724 | |||
| 913ced70b0 | |||
| 6ffce30a36 | |||
| f5a57d886c | |||
| e8ba49ecca | |||
| c79a5dc94b | |||
| 4db83ae678 | |||
| 84ceb7ffd2 | |||
| e215ac4343 | |||
| bc8048790f | |||
| 886ccf84c1 | |||
| c067cb9fe4 | |||
| 6b2389cdc3 | |||
| d93916b159 | |||
| c34f548e45 | |||
| 6fcd56cc86 | |||
| 8f88a87c93 | |||
| f8c2f84322 | |||
| 46c4947871 | |||
| 64759ec2da | |||
| 5f7e768e64 | |||
| 4bc189f1c5 | |||
| 71721ab198 | |||
| 5536a48966 | |||
| f77e29d3c9 | |||
| 4b1fc718a2 | |||
| 1708c3f8a0 | |||
| 352e02028d | |||
| 1bbb639c83 | |||
| c14265f103 | |||
| c030a6b3d8 | |||
| af997ea658 | |||
| efa4d7fc60 | |||
| f714aaa0e9 | |||
| aee6e60583 | |||
| 4e602687d5 | |||
| d026152ac8 | |||
| 3f21a358d2 | |||
| dc55e47c98 | |||
| 3b804e2321 | |||
| b32f851a90 | |||
| 479d20e76f | |||
| fae4553fc8 | |||
| cb74b23e45 | |||
| af8f12c33a | |||
| a148c4d1f6 | |||
| f7190c0c9c | |||
| c00d7765a9 | |||
| 2b651d86e2 | |||
| 9be3517093 | |||
| fcfedaf7e7 | |||
| 0b82794e9c | |||
| 2a52e398cb | |||
| c31e882ad2 | |||
| 2f0903e0eb | |||
| 2396053bc1 | |||
| 17fd12305e | |||
| 425ea4374d | |||
| c076c3c74a | |||
| 547cdfd8ec | |||
| a0af8f0025 | |||
| c970b1ea68 | |||
| 4d1e2dec26 | |||
| 108408a944 | |||
| 18d07d431f | |||
| cbc024f67a | |||
| 55ec5970da | |||
| 58bdca6659 | |||
| ef49b0d3f8 | |||
| 9cb691e5ad | |||
| 04d09582d4 | |||
| 8f90dc172b | |||
| f759261919 | |||
| 2606f6d929 | |||
| c288e5d8dc | |||
| 4b76d4b71e | |||
| 72310130d2 | |||
| f9e51ef06e | |||
| 92a5eb0d98 | |||
| 77d2ea1a1f | |||
| 92f96ddb84 | |||
| 15a914e25e | |||
| 912a29d091 | |||
| b2c32ce70e | |||
| ed1a708c40 | |||
| e905128d45 | |||
| fd598f372a | |||
| 7a3946a9e2 | |||
| cbdd2584d0 | |||
| f3161c2712 | |||
| 148542dd5a | |||
| d2b2c339f2 | |||
| d2578c48f0 | |||
| fecfd54728 | |||
| 17e4162d3e | |||
| 742209d773 | |||
| 1fa4b7cf27 | |||
| 5dc5507039 | |||
| 3035a20b9f | |||
| 04b3bb034f | |||
| bf84be0136 | |||
| 890cf48749 | |||
| 2b3436c6ce | |||
| 4df8c3b2e5 | |||
| 25a2696c32 | |||
| 52f879f842 | |||
| 4f70fa156d | |||
| 38e77f04be | |||
| 060206ddd4 | |||
| 0bc0909386 | |||
| 667d528a8c | |||
| fa7fbe26e7 | |||
| ba422a29d0 | |||
| d220ec5bf7 | |||
| 7baf5492bc | |||
| d5a8409bb5 | |||
| f58f90667c | |||
| a388e1a802 | |||
| 8811d10a73 | |||
| c7a394cd1a | |||
| b7615a7f2e | |||
| 1ca70c1e50 | |||
| 253cbb1d0c | |||
| e38a16404c | |||
| f17a1f875c | |||
| 2237e0f5df | |||
| 0df471585f | |||
| 95aac1a7bf | |||
| c078bc958d | |||
| 49c27924ea | |||
| c9dd8e7338 | |||
| 5ef90cc75b | |||
| 063c61d96c | |||
| 0cb5e36b20 | |||
| 319bab5b34 | |||
| 90a4f2111f | |||
| 3aba202970 | |||
| c8974b7fa2 | |||
| 3654a19586 | |||
| 5f0929c1aa | |||
| c0fa83bce6 | |||
| c201ee42a0 | |||
| e6a4cc3098 | |||
| 39f2fe2ba1 | |||
| 72ce190996 | |||
| 527dd1b61b | |||
| af8feaadfe | |||
| 3164f76662 | |||
| d6e531d4b6 | |||
| af76878dad | |||
| 28cce39fe7 | |||
| a8b806af08 | |||
| fa0b0294b4 | |||
| 58ab410b0a | |||
| 51c8b20506 | |||
| 1e62a3760e | |||
| 2f569d4104 | |||
| f23e444ed0 | |||
| e6e9a32f03 | |||
| 8237df33a7 | |||
| 624b574013 | |||
| d762bc89d1 | |||
| f0cbec07b8 | |||
| 8c1f583968 | |||
| b28636fa73 | |||
| 092054fd44 | |||
| 9391917d08 | |||
| 5cf008f53d | |||
| 231194bd53 | |||
| 2707e87554 | |||
| 4b40c59e7e | |||
| f2e8579f95 | |||
| 57118c85e3 | |||
| 8ddc7b0a58 | |||
| bc63d0aeea | |||
| 9def26e809 | |||
| 74ac709bb5 | |||
| 1f749fad49 | |||
| 13c85d4331 | |||
| 77d2099cdb | |||
| 56a312f217 | |||
| aa2b3dac49 | |||
| 1a8daef79d | |||
| a83d133f93 | |||
| b0d01dffd9 | |||
| b74e7ce86d | |||
| 671f7a7074 | |||
| 55fd873b37 | |||
| 32c667b22d | |||
| a6b062f638 | |||
| f9183b4c62 | |||
| c7d575a0ff | |||
| a575e62519 | |||
| 3761d60f41 | |||
| fd629d43ba | |||
| 76b1cb0f5a | |||
| 2f94abc9f7 | |||
| c70040fe5d | |||
| 4b8a9e448a | |||
| 1e4c7d0f31 | |||
| ec75795a02 | |||
| ad26b64b28 | |||
| 9e4715ebbd | |||
| cc612296d0 | |||
| 1148b3948c | |||
| c7e605fd60 | |||
| 4ab32c670e | |||
| 2d810568a8 | |||
| b8353aa817 | |||
| 7924f63e28 | |||
| b3b617ea0b | |||
| 18a5071618 | |||
| fea58029b9 | |||
| e748723209 | |||
| 8a47d81936 | |||
| 7ae9f5694d | |||
| 9031379469 | |||
| dc71e6777f | |||
| 89eb798fa8 | |||
| 4304e068b9 | |||
| 126bc6de6a | |||
| c2b9107f13 | |||
| 1471f4a839 | |||
| b0b3c6671d | |||
| 6ddb8fb6c2 | |||
| 66da49b0df | |||
| 750cd26c36 | |||
| 4c15589663 | |||
| 62a0e89748 | |||
| b9603240d0 | |||
| 85d87bb45e | |||
| 3193308d8d | |||
| 7fe90c2a1a | |||
| e917b19f22 | |||
| 7d47d6a752 | |||
| 8fbb94d15a | |||
| 9fcadf8fbb | |||
| f5ac8ac5e9 | |||
| 0a0b8aafaf | |||
| 097a7eae7e | |||
| c0e43a0cf0 | |||
| d7926dd9d1 | |||
| da474741e6 | |||
| a1e16031e0 | |||
| a229093b60 | |||
| 1a64a1c34d | |||
| b8f49d2d45 | |||
| 990140c392 | |||
| 542b296018 | |||
| c6122d33b9 | |||
| 8c71066660 | |||
| a748164bf2 | |||
| c427fa8790 | |||
| 093cc07c39 | |||
| 30f14820c6 | |||
| c8ea2ab199 | |||
| d56bbacc0b | |||
| bb468a8b7e | |||
| 7e99f4b078 | |||
| 14ce6dd818 | |||
| 063a3e425d | |||
| 0900dc75ac | |||
| aa8bd1f8dc | |||
| c71f7ff8ad | |||
| fe18420913 | |||
| 97124928df | |||
| c108bfb12f | |||
| 5fe6ed1462 | |||
| df5fcce769 | |||
| 8f57ece7b8 | |||
| 8a10d201c5 | |||
| 9d7e63a7a7 | |||
| 87c1ae2ac0 | |||
| 56c922e715 | |||
| a29ac8e68f | |||
| 03f9c6039c | |||
| 73d81df8cb | |||
| 484f554339 | |||
| 2ad864e68e | |||
| 723ff44151 | |||
| 04e11cbbf7 | |||
| 3aef5998df | |||
| 34018ae7eb | |||
| 2f9d8e776f | |||
| 9503f0d963 | |||
| 32aff3e3f4 | |||
| 9b9f10d4ca | |||
| e4f0cc6b37 | |||
| d211249086 | |||
| 0fc5db8aee | |||
| 0a2abef979 | |||
| 8242f13aff | |||
| 7516ba7028 | |||
| 3417407cbe | |||
| 720d046c00 | |||
| b88f560b07 | |||
| 51b264ca13 | |||
| 0309aeab34 | |||
| aca8d2948d | |||
| 09596d2181 | |||
| e87f7e1674 | |||
| 4ad1cccc33 | |||
| 5d12648669 | |||
| 7e989720bf | |||
| f8a2892811 | |||
| eaab23ec19 | |||
| 36dcdf256f | |||
| 10a596db65 | |||
| c76302cf98 | |||
| 176cf608ef | |||
| f69073ba02 | |||
| 09ecf9262a | |||
| a3fc0d9120 | |||
| 0d5c3283d3 | |||
| 7b486348ef | |||
| 25f752d6b5 | |||
| 74e35a2d65 | |||
| 3532289575 | |||
| 7db9ba03f3 | |||
| b0baaf9ea6 | |||
| b7c6dab3ad | |||
| 2daa145867 | |||
| 4bd5fb22b4 | |||
| 78533a6045 | |||
| e1c533a15e | |||
| b6c2bb8023 | |||
| c45653a50a | |||
| d827513b73 | |||
| ad183ca621 | |||
| 1d11c5a186 | |||
| e84e78ec55 | |||
| f91e4316ff | |||
| d54b812881 | |||
| 28dc5ba2a4 | |||
| 979a320ca6 | |||
| c46186b237 | |||
| 27cf093f85 | |||
| ec0fb7e0b9 | |||
| 90029456fe | |||
| b167b00075 | |||
| b13fab76f3 | |||
| 782a9d310d | |||
| 537b1f2a29 | |||
| 2fad6b62cb | |||
| bf173b4ede | |||
| c52f038c76 | |||
| b12ba98a5c | |||
| dbccdf342b | |||
| 49b6d029c4 | |||
| d6469954ce | |||
| 5f40550ad4 | |||
| 79ccbdf100 | |||
| 1983cfcab2 | |||
| 753f86707f | |||
| 16d0ed505b | |||
| 9de09c55f8 | |||
| c3d7a33aa2 | |||
| a9cc00a478 | |||
| ec035ba648 | |||
| 5446f3cae4 | |||
| 6a550092c2 | |||
| 1b691f6bcd | |||
| 98f45cc4c2 | |||
| edc4a20859 | |||
| 74e1380df8 | |||
| dfa5187ff7 | |||
| c99c4425cd | |||
| 2d8919a079 | |||
| f638287213 | |||
| 991d885b63 | |||
| bb17efa817 | |||
| deec29c1b4 | |||
| 9d872008a7 | |||
| 145b4401af | |||
| 17bd50c263 | |||
| 4cb79de685 | |||
| 28ab0b8e46 | |||
| 6911802b87 | |||
| 5b98924561 | |||
| f13944badc | |||
| af41e6497d | |||
| b1122a3da5 | |||
| b17fddda63 | |||
| 20dc020596 | |||
| b53291650f | |||
| b83d84e519 | |||
| 14794d1a5f | |||
| 6b130ef045 | |||
| 25a6126ef4 | |||
| a2df09fb5b | |||
| 465b2741fb | |||
| 724dc5c86c | |||
| f4208c19a7 | |||
| 6fed293716 | |||
| 29ffaf04c4 | |||
| bc9182f214 | |||
| 91c70a51a0 | |||
| dfe30d7f5e | |||
| 815d5460e7 | |||
| 8a63c6768b | |||
| f7c29848f1 | |||
| 78b9426c1c | |||
| 87b22ac684 | |||
| 46c30d197a | |||
| 36b8354350 | |||
| b6702c7182 | |||
| 09d7f608cd | |||
| d023a27377 | |||
| 190595febf | |||
| b25edec26c | |||
| 85d0c12dad | |||
| 25c98ef078 | |||
| af51baea9a | |||
| e97b16606c | |||
| 5ff9e43899 | |||
| d3a49e109c | |||
| e3dbff6996 | |||
| d9f5410afd | |||
| 0568c8f563 | |||
| 16043a7d68 | |||
| f24ee61d11 | |||
| 881a6967ac | |||
| a93f66c6ac | |||
| fdf4b29ae2 | |||
| d5f6ca0d2e | |||
| 12d9ccf28c | |||
| ffc270cc6f | |||
| 61e2e58297 | |||
| b68ede1f63 | |||
| d333c1393c | |||
| 35d6f2f961 | |||
| 3d619a0c61 | |||
| bda812f170 | |||
| 826719bb67 | |||
| 631101eae5 | |||
| fa0b9bf935 | |||
| 708af5e83c | |||
| 993d31167b | |||
| ac5fc7d28a | |||
| 73f3fad13d | |||
| 85e0e2165f | |||
| 89ee103303 | |||
| 6b313947c3 | |||
| fba8e6ce35 | |||
| 622c024547 | |||
| 2c51d92bab | |||
| 11ef2ef708 | |||
| df793e07fd | |||
| bae6eea3aa | |||
| be17b67cc1 | |||
| 645a24d29b | |||
| 64962ce632 | |||
| 5120883691 | |||
| 0b4570ebee | |||
| 5bbdc7e426 | |||
| a1d60630a0 | |||
| e96fd6d69e | |||
| 1423b3fc35 | |||
| fd10b4d585 | |||
| 8a79437668 | |||
| 85a87dc40a | |||
| 95aa0a0024 | |||
| d0c44d1376 | |||
| b0e31ff305 | |||
| f11569ac53 | |||
| fbf7a61bc9 | |||
| 2265165fa3 | |||
| b216b17ef5 | |||
| b2c7b924ac | |||
| 1349f950c9 | |||
| f1c398a3a4 | |||
| 369231ff11 | |||
| 271dee5be6 | |||
| a0c8f40e7b | |||
| 4db0aef0ff | |||
| 5ed9bd243f | |||
| 2c53306f5a | |||
| a3624357dc | |||
| afe0be31f2 | |||
| 71854b704d | |||
| 0907773d6f | |||
| 787eedc8af | |||
| 040a2b5e5f | |||
| 347ee275fa | |||
| 1c0a9e6726 | |||
| c4f038ab9a | |||
| 3746ac5fc1 | |||
| 5c4353dd0c | |||
| f64caed220 | |||
| 863d590292 | |||
| 0dcf64c82b | |||
| 48fd5c5ff6 | |||
| 84fa374072 | |||
| 2313b0b450 | |||
| 4fa6f579af | |||
| 08c1328932 | |||
| 4586308210 | |||
| 5aa561dcb2 | |||
| e07612fe24 | |||
| c9289204c4 | |||
| 51bb1081a6 | |||
| 25066bb33c | |||
| bfdb176445 | |||
| 42233fa756 | |||
| 55de4319ed | |||
| 306f6edd4e | |||
| bf55bbccd9 | |||
| 6e26c0a0be | |||
| 11bcd318ab | |||
| 2f6d19dc91 | |||
| 989e1ce175 | |||
| 1c2fd46401 | |||
| b7967b34d1 | |||
| 44dfa37852 | |||
| a06e3c7e74 | |||
| b54c331bef | |||
| 8216fe5e36 | |||
| b5c9c4b188 | |||
| 86bd617933 | |||
| eb771e7932 | |||
| 5ea91aeafc | |||
| 3c67290aeb | |||
| f9f6c2f9be | |||
| a92e8f61bc | |||
| e739683bb6 | |||
| f4a743593d | |||
| f93e49ecf3 | |||
| d6325a42ea | |||
| ef997be219 | |||
| b6eadfcebc | |||
| e4c65ca631 | |||
| 2d2342f9ee | |||
| 60838a1b7e | |||
| 63401b7640 | |||
| 6a5b669ec4 | |||
| ca201447d2 | |||
| f1d3117518 | |||
| 8559948a5a | |||
| a3b4aa3b4a | |||
| 0347fa381f | |||
| 3d475cc779 | |||
| ceec74fb70 | |||
| f5296a947e | |||
| 5b5fcd9372 | |||
| c38817c62e | |||
| ba08c6a707 | |||
| 1797bc8181 | |||
| 657aaf75ec | |||
| dac3c733b3 | |||
| d02b6b67b5 | |||
| 52ce5f3a2f | |||
| 1d316e17cb | |||
| 6193f4b87a | |||
| de5a30e46c | |||
| 973acd22ca | |||
| e235293070 | |||
| 07ab67faa8 | |||
| e6fce8cbc7 | |||
| 589f8e62f4 | |||
| 27f45f7cf6 | |||
| 48af4ac79c | |||
| 9b6baab1e0 | |||
| 3ba4e712dc | |||
| 5bf3ecdf42 | |||
| bd6fd472a6 | |||
| 7f4776b52b | |||
| d20f03127a | |||
| 4b6c7774e0 | |||
| d02bca8879 | |||
| 5e654ccf94 | |||
| 7d3e5c22fb | |||
| 23eb61ee5f | |||
| 2cded4b2d1 | |||
| ba7662fc1e | |||
| 832a48ac76 | |||
| 2db0c125fe | |||
| 20d9624bc6 | |||
| f20ee68f50 | |||
| cbf45ce3eb | |||
| 2e7fdd93dd | |||
| 8ce38f82b5 | |||
| ec5429eeec | |||
| 4b17c4045d | |||
| aaf42e4693 |
@@ -0,0 +1,13 @@
|
|||||||
|
dist
|
||||||
|
coverage
|
||||||
|
|
||||||
|
.yarn/*
|
||||||
|
!.yarn/cache
|
||||||
|
!.yarn/patches
|
||||||
|
!.yarn/plugins
|
||||||
|
!.yarn/releases
|
||||||
|
!.yarn/unplugged
|
||||||
|
!.yarn/sdks
|
||||||
|
!.yarn/versions
|
||||||
|
|
||||||
|
data/*
|
||||||
+20
@@ -1,6 +1,26 @@
|
|||||||
|
######
|
||||||
|
# DB #
|
||||||
|
######
|
||||||
|
|
||||||
|
DB_HOST=db
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_USERNAME=std_notes_user
|
DB_USERNAME=std_notes_user
|
||||||
DB_PASSWORD=changeme123
|
DB_PASSWORD=changeme123
|
||||||
DB_DATABASE=standard_notes_db
|
DB_DATABASE=standard_notes_db
|
||||||
|
DB_TYPE=mysql
|
||||||
|
|
||||||
|
#########
|
||||||
|
# CACHE #
|
||||||
|
#########
|
||||||
|
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
|
REDIS_HOST=cache
|
||||||
|
CACHE_TYPE=redis
|
||||||
|
|
||||||
|
########
|
||||||
|
# KEYS #
|
||||||
|
########
|
||||||
|
|
||||||
|
AUTH_JWT_SECRET=
|
||||||
|
AUTH_SERVER_ENCRYPTION_SERVER_KEY=
|
||||||
|
VALET_TOKEN_SECRET=
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"root": true,
|
"root": true,
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"project": "./tsconfig.json"
|
"project": "./tsconfig.json"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
PUBLIC_FILES_SERVER_URL=http://localhost:3125
|
||||||
|
DB_HOST=db
|
||||||
|
DB_USERNAME=std_notes_user
|
||||||
|
DB_PASSWORD=changeme123
|
||||||
|
DB_DATABASE=standard_notes_db
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DEBUG_LEVEL=all
|
||||||
|
DB_SQLITE_DATABASE_PATH=standard_notes_db
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_HOST=cache
|
||||||
|
AUTH_SERVER_ACCESS_TOKEN_AGE=4
|
||||||
|
AUTH_SERVER_REFRESH_TOKEN_AGE=10
|
||||||
|
AUTH_SERVER_EPHEMERAL_SESSION_AGE=300
|
||||||
|
SYNCING_SERVER_REVISIONS_FREQUENCY=2
|
||||||
|
AUTH_SERVER_LOG_LEVEL=debug
|
||||||
|
SYNCING_SERVER_LOG_LEVEL=debug
|
||||||
|
FILES_SERVER_LOG_LEVEL=debug
|
||||||
|
REVISIONS_SERVER_LOG_LEVEL=debug
|
||||||
|
API_GATEWAY_LOG_LEVEL=debug
|
||||||
|
|
||||||
|
MYSQL_DATABASE=standard_notes_db
|
||||||
|
MYSQL_USER=std_notes_user
|
||||||
|
MYSQL_PASSWORD=changeme123
|
||||||
|
MYSQL_ROOT_PASSWORD=changeme123
|
||||||
|
|
||||||
|
AUTH_JWT_SECRET=f95259c5e441f5a4646d76422cfb3df4c4488842901aa50b6c51b8be2e0040e9
|
||||||
|
AUTH_SERVER_ENCRYPTION_SERVER_KEY=1087415dfde3093797f9a7ca93a49e7d7aa1861735eb0d32aae9c303b8c3d060
|
||||||
|
VALET_TOKEN_SECRET=4b886819ebe1e908077c6cae96311b48a8416bd60cc91c03060e15bdf6b30d1f
|
||||||
|
|
||||||
|
SYNCING_SERVER_CONTENT_SIZE_TRANSFER_LIMIT=1000000
|
||||||
+54
-6
@@ -9,86 +9,134 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/analytics"
|
directory: "/packages/analytics"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/api-gateway"
|
directory: "/packages/api-gateway"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/auth"
|
directory: "/packages/auth"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/common"
|
directory: "/packages/common"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/domain-core"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/domain-events"
|
directory: "/packages/domain-events"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/domain-events-infra"
|
directory: "/packages/domain-events-infra"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
- package-ecosystem: "npm"
|
- dependency-type: "direct"
|
||||||
directory: "/packages/event-store"
|
|
||||||
schedule:
|
|
||||||
interval: "daily"
|
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/files"
|
directory: "/packages/files"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/home-server"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/predicates"
|
directory: "/packages/predicates"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/packages/revisions"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/scheduler"
|
directory: "/packages/scheduler"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/security"
|
directory: "/packages/security"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/settings"
|
directory: "/packages/settings"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/sncrypto-node"
|
directory: "/packages/sncrypto-node"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/syncing-server"
|
directory: "/packages/syncing-server"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/time"
|
directory: "/packages/time"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/packages/workspace"
|
directory: "/packages/websockets"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
allow:
|
||||||
|
- dependency-type: "direct"
|
||||||
|
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
|
|||||||
@@ -11,28 +11,12 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
call_server_utility_workflow:
|
call_server_application_workflow:
|
||||||
name: Server Utility
|
name: Server Application
|
||||||
uses: standardnotes/server/.github/workflows/common-server-utility.yml@main
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
with:
|
with:
|
||||||
service_name: analytics
|
service_name: analytics
|
||||||
workspace_name: "@standardnotes/analytics"
|
workspace_name: "@standardnotes/analytics"
|
||||||
deploy_web: false
|
deploy_web: false
|
||||||
package_path: packages/analytics
|
package_path: packages/analytics
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_utility_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_ANALYTICS_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -17,21 +17,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
service_name: api-gateway
|
service_name: api-gateway
|
||||||
workspace_name: "@standardnotes/api-gateway"
|
workspace_name: "@standardnotes/api-gateway"
|
||||||
e2e_tag_parameter_name: api_gateway_image_tag
|
|
||||||
deploy_worker: false
|
deploy_worker: false
|
||||||
package_path: packages/api-gateway
|
package_path: packages/api-gateway
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_application_workflow
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_API_GATEWAY_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -17,30 +17,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
service_name: auth
|
service_name: auth
|
||||||
workspace_name: "@standardnotes/auth-server"
|
workspace_name: "@standardnotes/auth-server"
|
||||||
e2e_tag_parameter_name: auth_image_tag
|
|
||||||
package_path: packages/auth
|
package_path: packages/auth
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_application_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_AUTH_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Configure AWS credentials
|
- name: Configure AWS credentials
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@v3
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
@@ -50,6 +50,6 @@ jobs:
|
|||||||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
||||||
with:
|
with:
|
||||||
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
task-definition: ${{ steps.task-def-prod.outputs.task-definition }}
|
||||||
service: ${{ inputs.service_name }}-prod
|
service: ${{ inputs.service_name }}
|
||||||
cluster: prod
|
cluster: prod
|
||||||
wait-for-service-stability: true
|
wait-for-service-stability: true
|
||||||
|
|||||||
@@ -6,9 +6,6 @@ on:
|
|||||||
service_name:
|
service_name:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
bundle_dir:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
package_path:
|
package_path:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
@@ -30,7 +27,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
|
||||||
- name: Cache build
|
- name: Cache build
|
||||||
id: cache-build
|
id: cache-build
|
||||||
@@ -38,7 +39,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
packages/**/dist
|
packages/**/dist
|
||||||
${{ inputs.bundle_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
||||||
|
|
||||||
- name: Set up Node
|
- name: Set up Node
|
||||||
@@ -47,22 +47,21 @@ jobs:
|
|||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
run: yarn build ${{ inputs.package_path }}
|
run: yarn build
|
||||||
|
|
||||||
- name: Bundle
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ inputs.bundle_dir }}
|
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
- name: Configure AWS credentials
|
- name: Configure AWS credentials
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@v3
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
@@ -70,7 +69,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Login to Amazon ECR
|
- name: Login to Amazon ECR
|
||||||
id: login-ecr
|
id: login-ecr
|
||||||
uses: aws-actions/amazon-ecr-login@v1
|
uses: aws-actions/amazon-ecr-login@v2
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@master
|
uses: docker/setup-qemu-action@master
|
||||||
@@ -82,11 +81,11 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@master
|
uses: docker/setup-buildx-action@master
|
||||||
|
|
||||||
- name: Publish Docker image
|
- name: Publish Docker image
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
context: ${{ inputs.bundle_dir }}
|
context: .
|
||||||
file: ${{ inputs.bundle_dir }}/${{ inputs.package_path }}/Dockerfile
|
file: ${{ inputs.package_path }}/Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
name: Reusable Run E2E Test Suite Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
default: all
|
||||||
|
description: The test suite to run
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-self-hosted:
|
||||||
|
uses: standardnotes/server/.github/workflows/e2e-self-hosted.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: ${{ inputs.snjs_image_tag }}
|
||||||
|
suite: ${{ inputs.suite }}
|
||||||
|
|
||||||
|
e2e-home-server:
|
||||||
|
uses: standardnotes/server/.github/workflows/e2e-home-server.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: ${{ inputs.snjs_image_tag }}
|
||||||
|
suite: ${{ inputs.suite }}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
name: Reusable Publish Docker Self Hosting Image Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
required: true
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
required: true
|
||||||
|
AWS_ACCESS_KEY_ID:
|
||||||
|
required: true
|
||||||
|
AWS_SECRET_ACCESS_KEY:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@master
|
||||||
|
with:
|
||||||
|
platforms: all
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@master
|
||||||
|
|
||||||
|
- name: Publish Docker image
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
standardnotes/server:latest
|
||||||
|
standardnotes/server:${{ github.sha }}
|
||||||
@@ -17,9 +17,6 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
default: true
|
default: true
|
||||||
type: boolean
|
type: boolean
|
||||||
e2e_tag_parameter_name:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
package_path:
|
package_path:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
@@ -36,177 +33,11 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
temp_dir: ${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Create Bundle Dir
|
|
||||||
id: bundle-dir
|
|
||||||
run: echo "temp_dir=$(mktemp -d -t ${{ inputs.service_name }}-${{ github.sha }}-XXXXXXX)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Bundle
|
|
||||||
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ needs.build.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: yarn lint:${{ inputs.service_name }}
|
|
||||||
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ needs.build.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: yarn test ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
e2e:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ needs.build.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Bundle
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ needs.build.outputs.temp_dir }}
|
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@master
|
|
||||||
with:
|
|
||||||
platforms: all
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
id: buildx
|
|
||||||
uses: docker/setup-buildx-action@master
|
|
||||||
|
|
||||||
- name: Publish Docker image for E2E testing
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
|
||||||
context: ${{ needs.build.outputs.temp_dir }}
|
|
||||||
file: ${{ needs.build.outputs.temp_dir }}/${{ inputs.package_path }}/Dockerfile
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
push: true
|
|
||||||
tags: standardnotes/${{ inputs.service_name }}:${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Run E2E test suite
|
|
||||||
uses: convictional/trigger-workflow-and-wait@master
|
|
||||||
with:
|
|
||||||
owner: standardnotes
|
|
||||||
repo: self-hosted
|
|
||||||
github_token: ${{ secrets.CI_PAT_TOKEN }}
|
|
||||||
workflow_file_name: testing-with-updating-client-and-server.yml
|
|
||||||
wait_interval: 30
|
|
||||||
client_payload: '{"${{ inputs.e2e_tag_parameter_name }}": "${{ github.sha }}"}'
|
|
||||||
propagate_failure: true
|
|
||||||
trigger_workflow: true
|
|
||||||
wait_workflow: true
|
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
needs: [ build, test, lint, e2e ]
|
|
||||||
|
|
||||||
name: Publish Docker Image
|
name: Publish Docker Image
|
||||||
uses: standardnotes/server/.github/workflows/common-docker-image.yml@main
|
uses: standardnotes/server/.github/workflows/common-docker-image.yml@main
|
||||||
with:
|
with:
|
||||||
service_name: ${{ inputs.service_name }}
|
service_name: ${{ inputs.service_name }}
|
||||||
bundle_dir: ${{ needs.build.outputs.temp_dir }}
|
|
||||||
package_path: ${{ inputs.package_path }}
|
package_path: ${{ inputs.package_path }}
|
||||||
workspace_name: ${{ inputs.workspace_name }}
|
workspace_name: ${{ inputs.workspace_name }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
@@ -1,164 +0,0 @@
|
|||||||
name: Reusable Server Utility Workflow
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
service_name:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workspace_name:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
deploy_web:
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
type: boolean
|
|
||||||
deploy_worker:
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
type: boolean
|
|
||||||
package_path:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
secrets:
|
|
||||||
DOCKER_USERNAME:
|
|
||||||
required: true
|
|
||||||
DOCKER_PASSWORD:
|
|
||||||
required: true
|
|
||||||
CI_PAT_TOKEN:
|
|
||||||
required: true
|
|
||||||
AWS_ACCESS_KEY_ID:
|
|
||||||
required: true
|
|
||||||
AWS_SECRET_ACCESS_KEY:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
temp_dir: ${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Create Bundle Dir
|
|
||||||
id: bundle-dir
|
|
||||||
run: echo "temp_dir=$(mktemp -d -t ${{ inputs.service_name }}-${{ github.sha }}-XXXXXXX)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Bundle
|
|
||||||
run: yarn workspace ${{ inputs.workspace_name }} bundle --no-compress --output-directory ${{ steps.bundle-dir.outputs.temp_dir }}
|
|
||||||
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ needs.build.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: yarn lint:${{ inputs.service_name }}
|
|
||||||
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cache build
|
|
||||||
id: cache-build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
packages/**/dist
|
|
||||||
${{ needs.build.outputs.temp_dir }}
|
|
||||||
key: ${{ runner.os }}-${{ inputs.service_name }}-build-${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Set up Node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
if: steps.cache-build.outputs.cache-hit != 'true'
|
|
||||||
run: yarn build ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: yarn test ${{ inputs.package_path }}
|
|
||||||
|
|
||||||
publish:
|
|
||||||
needs: [ build, test, lint ]
|
|
||||||
|
|
||||||
name: Publish Docker Image
|
|
||||||
uses: standardnotes/server/.github/workflows/common-docker-image.yml@main
|
|
||||||
with:
|
|
||||||
service_name: ${{ inputs.service_name }}
|
|
||||||
bundle_dir: ${{ needs.build.outputs.temp_dir }}
|
|
||||||
package_path: ${{ inputs.package_path }}
|
|
||||||
workspace_name: ${{ inputs.workspace_name }}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
deploy-web:
|
|
||||||
if: ${{ inputs.deploy_web }}
|
|
||||||
|
|
||||||
needs: publish
|
|
||||||
|
|
||||||
name: Deploy Web
|
|
||||||
uses: standardnotes/server/.github/workflows/common-deploy.yml@main
|
|
||||||
with:
|
|
||||||
service_name: ${{ inputs.service_name }}
|
|
||||||
docker_image: ${{ inputs.service_name }}:${{ github.sha }}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
deploy-worker:
|
|
||||||
if: ${{ inputs.deploy_worker }}
|
|
||||||
|
|
||||||
needs: publish
|
|
||||||
|
|
||||||
name: Deploy Worker
|
|
||||||
uses: standardnotes/server/.github/workflows/common-deploy.yml@main
|
|
||||||
with:
|
|
||||||
service_name: ${{ inputs.service_name }}-worker
|
|
||||||
docker_image: ${{ inputs.service_name }}:${{ github.sha }}
|
|
||||||
secrets: inherit
|
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
name: E2E Home Server Test Suite
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
default: all
|
||||||
|
description: The test suite to run
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-home-server:
|
||||||
|
name: (Home Server) E2E Test Suite
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
db_type: [mysql, sqlite]
|
||||||
|
cache_type: [redis, memory]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
snjs:
|
||||||
|
image: standardnotes/snjs:${{ inputs.snjs_image_tag }}
|
||||||
|
ports:
|
||||||
|
- 9001:9001
|
||||||
|
cache:
|
||||||
|
image: redis
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
db:
|
||||||
|
image: mysql
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
env:
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
MYSQL_DATABASE: standardnotes
|
||||||
|
MYSQL_USER: standardnotes
|
||||||
|
MYSQL_PASSWORD: standardnotes
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Copy dotenv file
|
||||||
|
run: cp packages/home-server/.env.sample packages/home-server/.env
|
||||||
|
|
||||||
|
- name: Fill in env variables
|
||||||
|
run: |
|
||||||
|
sed -i "s/JWT_SECRET=/JWT_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/AUTH_JWT_SECRET=/AUTH_JWT_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/ENCRYPTION_SERVER_KEY=/ENCRYPTION_SERVER_KEY=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/PSEUDO_KEY_PARAMS_KEY=/PSEUDO_KEY_PARAMS_KEY=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
sed -i "s/VALET_TOKEN_SECRET=/VALET_TOKEN_SECRET=$(openssl rand -hex 32)/g" packages/home-server/.env
|
||||||
|
echo "ACCESS_TOKEN_AGE=4" >> packages/home-server/.env
|
||||||
|
echo "REFRESH_TOKEN_AGE=10" >> packages/home-server/.env
|
||||||
|
echo "REVISIONS_FREQUENCY=2" >> packages/home-server/.env
|
||||||
|
echo "CONTENT_SIZE_TRANSFER_LIMIT=1000000" >> packages/home-server/.env
|
||||||
|
echo "DB_HOST=localhost" >> packages/home-server/.env
|
||||||
|
echo "DB_PORT=3306" >> packages/home-server/.env
|
||||||
|
echo "DB_DATABASE=standardnotes" >> packages/home-server/.env
|
||||||
|
echo "DB_SQLITE_DATABASE_PATH=homeserver.db" >> packages/home-server/.env
|
||||||
|
echo "DB_USERNAME=standardnotes" >> packages/home-server/.env
|
||||||
|
echo "DB_PASSWORD=standardnotes" >> packages/home-server/.env
|
||||||
|
echo "DB_TYPE=${{ matrix.db_type }}" >> packages/home-server/.env
|
||||||
|
echo "DB_DEBUG_LEVEL=all" >> packages/home-server/.env
|
||||||
|
echo "REDIS_URL=redis://localhost:6379" >> packages/home-server/.env
|
||||||
|
echo "CACHE_TYPE=${{ matrix.cache_type }}" >> packages/home-server/.env
|
||||||
|
echo "FILES_SERVER_URL=http://localhost:3123" >> packages/home-server/.env
|
||||||
|
echo "E2E_TESTING=true" >> packages/home-server/.env
|
||||||
|
|
||||||
|
- name: Run Server
|
||||||
|
run: nohup yarn workspace @standardnotes/home-server start > logs/output.log 2>&1 &
|
||||||
|
env:
|
||||||
|
PORT: 3123
|
||||||
|
|
||||||
|
- name: Wait for server to start
|
||||||
|
run: for i in {1..30}; do curl -s http://localhost:3123/healthcheck && break || sleep 1; done
|
||||||
|
|
||||||
|
- name: Run E2E Test Suite
|
||||||
|
run: yarn dlx mocha-headless-chrome --timeout 3600000 -f http://localhost:9001/mocha/test.html?suite=${{ inputs.suite }}
|
||||||
|
|
||||||
|
- name: Archive failed run logs
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: home-server-failure-logs-${{ inputs.suite }}-${{ matrix.db_type }}-${{ matrix.cache_type }}
|
||||||
|
retention-days: 5
|
||||||
|
path: |
|
||||||
|
logs/output.log
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
name: E2E Self Hosted Test Suite
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
default: all
|
||||||
|
description: The test suite to run
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
name: (Self Hosting) E2E Test Suite
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
service_proxy_type: [http, grpc]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
snjs:
|
||||||
|
image: standardnotes/snjs:${{ inputs.snjs_image_tag }}
|
||||||
|
ports:
|
||||||
|
- 9001:9001
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Run Server
|
||||||
|
run: docker compose -f docker-compose.ci.yml up -d
|
||||||
|
env:
|
||||||
|
DB_TYPE: mysql
|
||||||
|
CACHE_TYPE: redis
|
||||||
|
SERVICE_PROXY_TYPE: ${{ matrix.service_proxy_type }}
|
||||||
|
|
||||||
|
- name: Wait for server to start
|
||||||
|
run: docker/is-available.sh http://localhost:3123 $(pwd)/logs
|
||||||
|
|
||||||
|
- name: Run E2E Test Suite
|
||||||
|
run: yarn dlx mocha-headless-chrome --timeout 3600000 -f http://localhost:9001/mocha/test.html?suite=${{ inputs.suite }}
|
||||||
|
|
||||||
|
- name: Archive failed run logs
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: self-hosted-failure-logs-${{ inputs.suite }}
|
||||||
|
retention-days: 5
|
||||||
|
path: |
|
||||||
|
logs/*.err
|
||||||
|
logs/*.log
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
name: E2E Test Suite
|
||||||
|
|
||||||
|
run-name: E2E ${{ inputs.suite }} Test Suite against ${{ inputs.ref_name }} by ${{ inputs.author }}
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 */12 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
snjs_image_tag:
|
||||||
|
type: string
|
||||||
|
default: latest
|
||||||
|
description: The Docker image tag used for SNJS container
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
default: all
|
||||||
|
description: The test suite to run
|
||||||
|
author:
|
||||||
|
type: string
|
||||||
|
default: unknown
|
||||||
|
description: The author that triggered the workflow
|
||||||
|
ref_name:
|
||||||
|
type: string
|
||||||
|
default: unknown
|
||||||
|
description: The ref name from which the workflow was triggered
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
name: E2E
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: ${{ inputs.snjs_image_tag || 'latest' }}
|
||||||
|
suite: ${{ inputs.suite || 'all' }}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
name: Event Store
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: event-store
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/event-store*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
call_server_utility_workflow:
|
|
||||||
name: Server Utility
|
|
||||||
uses: standardnotes/server/.github/workflows/common-server-utility.yml@main
|
|
||||||
with:
|
|
||||||
service_name: event-store
|
|
||||||
workspace_name: "@standardnotes/event-store"
|
|
||||||
deploy_web: false
|
|
||||||
package_path: packages/event-store
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_utility_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_EVENT_STORE_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
@@ -17,30 +17,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
service_name: files
|
service_name: files
|
||||||
workspace_name: "@standardnotes/files-server"
|
workspace_name: "@standardnotes/files-server"
|
||||||
e2e_tag_parameter_name: files_image_tag
|
|
||||||
package_path: packages/files
|
package_path: packages/files
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_application_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_FILES_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
+102
-14
@@ -6,19 +6,107 @@ on:
|
|||||||
- main
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- uses: actions/checkout@v4
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Set up Node
|
- name: Cache build
|
||||||
uses: actions/setup-node@v3
|
id: cache-build
|
||||||
with:
|
uses: actions/cache@v3
|
||||||
registry-url: 'https://registry.npmjs.org'
|
with:
|
||||||
node-version-file: '.nvmrc'
|
path: |
|
||||||
- name: ESLint
|
packages/**/dist
|
||||||
run: yarn lint
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
- name: Build
|
|
||||||
run: yarn build
|
- name: Set up Node
|
||||||
- name: Test
|
uses: actions/setup-node@v3
|
||||||
run: yarn test
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: yarn lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
|
|
||||||
|
e2e-base:
|
||||||
|
needs: build
|
||||||
|
name: E2E Base Suite
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: 'latest'
|
||||||
|
suite: 'base'
|
||||||
|
|
||||||
|
e2e-vaults:
|
||||||
|
needs: build
|
||||||
|
name: E2E Vaults Suite
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: 'latest'
|
||||||
|
suite: 'vaults'
|
||||||
|
|||||||
@@ -4,24 +4,149 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release_and_publish:
|
build:
|
||||||
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
if: contains(github.event.head_commit.message, 'chore(release)') == false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: yarn lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
needs: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: yarn test
|
||||||
|
|
||||||
|
e2e-base:
|
||||||
|
needs: build
|
||||||
|
name: E2E Base Suite
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: 'latest'
|
||||||
|
suite: 'base'
|
||||||
|
|
||||||
|
e2e-vaults:
|
||||||
|
needs: build
|
||||||
|
name: E2E Vaults Suite
|
||||||
|
uses: standardnotes/server/.github/workflows/common-e2e.yml@main
|
||||||
|
with:
|
||||||
|
snjs_image_tag: 'latest'
|
||||||
|
suite: 'vaults'
|
||||||
|
|
||||||
|
publish-self-hosting:
|
||||||
|
needs: [ test, lint, e2e-base, e2e-vaults ]
|
||||||
|
name: Publish Self Hosting Docker Image
|
||||||
|
uses: standardnotes/server/.github/workflows/common-self-hosting.yml@main
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish-services:
|
||||||
|
needs: [ test, lint, e2e-base, e2e-vaults ]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.CI_PAT_TOKEN }}
|
token: ${{ secrets.CI_PAT_TOKEN }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Cache build
|
||||||
|
id: cache-build
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
packages/**/dist
|
||||||
|
key: ${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
|
||||||
- name: Setup git config
|
- name: Setup git config
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "standardci"
|
git config --global user.name "standardci"
|
||||||
git config --global user.email "ci@standardnotes.com"
|
git config --global user.email "ci@standardnotes.com"
|
||||||
|
|
||||||
- name: Import GPG key
|
- name: Import GPG key
|
||||||
uses: crazy-max/ghaction-import-gpg@v5
|
uses: crazy-max/ghaction-import-gpg@v6
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||||
passphrase: ${{ secrets.PASSPHRASE }}
|
passphrase: ${{ secrets.PASSPHRASE }}
|
||||||
@@ -34,7 +159,11 @@ jobs:
|
|||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
- name: Build packages
|
- name: Install
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
if: steps.cache-build.outputs.cache-hit != 'true'
|
||||||
run: yarn build
|
run: yarn build
|
||||||
|
|
||||||
- name: Bump version
|
- name: Bump version
|
||||||
@@ -44,4 +173,3 @@ jobs:
|
|||||||
run: yarn publish
|
run: yarn publish
|
||||||
env:
|
env:
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.CI_NPM_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.CI_NPM_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
@@ -17,30 +17,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
service_name: revisions
|
service_name: revisions
|
||||||
workspace_name: "@standardnotes/revisions-server"
|
workspace_name: "@standardnotes/revisions-server"
|
||||||
e2e_tag_parameter_name: revisions_image_tag
|
|
||||||
package_path: packages/revisions
|
package_path: packages/revisions
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_application_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_REVISIONS_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_REVISIONS_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -11,28 +11,12 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
call_server_utility_workflow:
|
call_server_application_workflow:
|
||||||
name: Server Utility
|
name: Server Application
|
||||||
uses: standardnotes/server/.github/workflows/common-server-utility.yml@main
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
with:
|
with:
|
||||||
service_name: scheduler
|
service_name: scheduler
|
||||||
workspace_name: "@standardnotes/scheduler-server"
|
workspace_name: "@standardnotes/scheduler-server"
|
||||||
deploy_web: false
|
deploy_web: false
|
||||||
package_path: packages/scheduler
|
package_path: packages/scheduler
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_utility_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SCHEDULER_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -17,30 +17,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
service_name: syncing-server-js
|
service_name: syncing-server-js
|
||||||
workspace_name: "@standardnotes/syncing-server"
|
workspace_name: "@standardnotes/syncing-server"
|
||||||
e2e_tag_parameter_name: syncing_server_js_image_tag
|
|
||||||
package_path: packages/syncing-server
|
package_path: packages/syncing-server
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_application_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_SYNCING_SERVER_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -11,35 +11,11 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
call_server_utility_workflow:
|
call_server_application_workflow:
|
||||||
name: Server Utility
|
name: Server Application
|
||||||
uses: standardnotes/server/.github/workflows/common-server-utility.yml@main
|
uses: standardnotes/server/.github/workflows/common-server-application.yml@main
|
||||||
with:
|
with:
|
||||||
service_name: websockets
|
service_name: websockets
|
||||||
workspace_name: "@standardnotes/websockets-server"
|
workspace_name: "@standardnotes/websockets-server"
|
||||||
package_path: packages/websockets
|
package_path: packages/websockets
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_utility_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WEBSOCKETS_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WEBSOCKETS_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
name: Workspace Server
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: workspace
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*standardnotes/workspace-server*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
call_server_utility_workflow:
|
|
||||||
name: Server Utility
|
|
||||||
uses: standardnotes/server/.github/workflows/common-server-utility.yml@main
|
|
||||||
with:
|
|
||||||
service_name: workspace
|
|
||||||
workspace_name: "@standardnotes/workspace-server"
|
|
||||||
package_path: packages/workspace
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
newrelic:
|
|
||||||
needs: call_server_utility_workflow
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Create New Relic deployment marker for Web
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WORKSPACE_WEB_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
|
|
||||||
- name: Create New Relic deployment marker for Worker
|
|
||||||
uses: newrelic/deployment-marker-action@v1
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
|
|
||||||
apiKey: ${{ secrets.NEW_RELIC_API_KEY }}
|
|
||||||
applicationId: ${{ secrets.NEW_RELIC_APPLICATION_ID_WORKSPACE_WORKER_PROD }}
|
|
||||||
revision: "${{ github.sha }}"
|
|
||||||
description: "Automated Deployment via Github Actions"
|
|
||||||
user: "${{ github.actor }}"
|
|
||||||
+9
-2
@@ -4,19 +4,26 @@
|
|||||||
dist
|
dist
|
||||||
coverage
|
coverage
|
||||||
.env
|
.env
|
||||||
newrelic_agent.log
|
|
||||||
|
|
||||||
.yarn/*
|
.yarn/*
|
||||||
!.yarn/cache
|
!.yarn/cache
|
||||||
!.yarn/patches
|
!.yarn/patches
|
||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
!.yarn/unplugged
|
|
||||||
!.yarn/sdks
|
!.yarn/sdks
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
|
yarn.build-error.log
|
||||||
|
|
||||||
packages/files/uploads/*
|
packages/files/uploads/*
|
||||||
!packages/files/uploads/.gitkeep
|
!packages/files/uploads/.gitkeep
|
||||||
|
|
||||||
data/*
|
data/*
|
||||||
!data/.gitkeep
|
!data/.gitkeep
|
||||||
|
|
||||||
|
packages/**/data/*
|
||||||
|
|
||||||
|
logs/*
|
||||||
|
!logs/.gitkeep
|
||||||
|
|
||||||
|
docker-compose.yml
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Generated
+91
-103
@@ -1,5 +1,5 @@
|
|||||||
import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url';
|
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import moduleExports, { Module } from 'module';
|
import moduleExports, { Module } from 'module';
|
||||||
import { createHash } from 'crypto';
|
import { createHash } from 'crypto';
|
||||||
@@ -10,7 +10,8 @@ const SAFE_TIME = 456789e3;
|
|||||||
|
|
||||||
const PortablePath = {
|
const PortablePath = {
|
||||||
root: `/`,
|
root: `/`,
|
||||||
dot: `.`
|
dot: `.`,
|
||||||
|
parent: `..`
|
||||||
};
|
};
|
||||||
const npath = Object.create(path);
|
const npath = Object.create(path);
|
||||||
const ppath = Object.create(path.posix);
|
const ppath = Object.create(path.posix);
|
||||||
@@ -88,7 +89,6 @@ async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) {
|
async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) {
|
||||||
var _a, _b, _c;
|
|
||||||
const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
|
const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
|
||||||
const sourceStat = await sourceFs.lstatPromise(source);
|
const sourceStat = await sourceFs.lstatPromise(source);
|
||||||
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
|
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
|
||||||
@@ -114,8 +114,8 @@ async function copyImpl(prelayout, postlayout, destinationFs, destination, sourc
|
|||||||
throw new Error(`Unsupported file type (${sourceStat.mode})`);
|
throw new Error(`Unsupported file type (${sourceStat.mode})`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((_a = opts.linkStrategy) == null ? void 0 : _a.type) !== `HardlinkFromIndex` || !sourceStat.isFile()) {
|
if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) {
|
||||||
if (updated || ((_b = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _b.getTime()) !== mtime.getTime() || ((_c = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _c.getTime()) !== atime.getTime()) {
|
if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) {
|
||||||
postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime));
|
postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime));
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
@@ -185,7 +185,7 @@ async function copyFileViaIndex(prelayout, postlayout, destinationFs, destinatio
|
|||||||
let indexStat = await maybeLStat(destinationFs, indexPath);
|
let indexStat = await maybeLStat(destinationFs, indexPath);
|
||||||
if (destinationStat) {
|
if (destinationStat) {
|
||||||
const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino;
|
const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino;
|
||||||
const isIndexModified = (indexStat == null ? void 0 : indexStat.mtimeMs) !== defaultTimeMs;
|
const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs;
|
||||||
if (isDestinationHardlinkedFromIndex) {
|
if (isDestinationHardlinkedFromIndex) {
|
||||||
if (isIndexModified && linkStrategy.autoRepair) {
|
if (isIndexModified && linkStrategy.autoRepair) {
|
||||||
atomicBehavior = 0 /* Lock */;
|
atomicBehavior = 0 /* Lock */;
|
||||||
@@ -255,8 +255,7 @@ async function copyFileDirect(prelayout, postlayout, destinationFs, destination,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
|
async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
|
||||||
var _a;
|
if (opts.linkStrategy?.type === `HardlinkFromIndex`) {
|
||||||
if (((_a = opts.linkStrategy) == null ? void 0 : _a.type) === `HardlinkFromIndex`) {
|
|
||||||
return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy);
|
return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy);
|
||||||
} else {
|
} else {
|
||||||
return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
|
return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
|
||||||
@@ -386,7 +385,7 @@ class FakeFS {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createdDirectory ?? (createdDirectory = subPath);
|
createdDirectory ??= subPath;
|
||||||
if (chmod != null)
|
if (chmod != null)
|
||||||
await this.chmodPromise(subPath, chmod);
|
await this.chmodPromise(subPath, chmod);
|
||||||
if (utimes != null) {
|
if (utimes != null) {
|
||||||
@@ -417,7 +416,7 @@ class FakeFS {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createdDirectory ?? (createdDirectory = subPath);
|
createdDirectory ??= subPath;
|
||||||
if (chmod != null)
|
if (chmod != null)
|
||||||
this.chmodSync(subPath, chmod);
|
this.chmodSync(subPath, chmod);
|
||||||
if (utimes != null) {
|
if (utimes != null) {
|
||||||
@@ -612,12 +611,14 @@ class FakeFS {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async writeJsonPromise(p, data) {
|
async writeJsonPromise(p, data, { compact = false } = {}) {
|
||||||
return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}
|
const space = compact ? 0 : 2;
|
||||||
|
return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)}
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
writeJsonSync(p, data) {
|
writeJsonSync(p, data, { compact = false } = {}) {
|
||||||
return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}
|
const space = compact ? 0 : 2;
|
||||||
|
return this.writeFileSync(p, `${JSON.stringify(data, null, space)}
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
async preserveTimePromise(p, cb) {
|
async preserveTimePromise(p, cb) {
|
||||||
@@ -851,7 +852,7 @@ class ProxiedFS extends FakeFS {
|
|||||||
readFileSync(p, encoding) {
|
readFileSync(p, encoding) {
|
||||||
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
|
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
|
||||||
}
|
}
|
||||||
async readdirPromise(p, opts) {
|
readdirPromise(p, opts) {
|
||||||
return this.baseFs.readdirPromise(this.mapToBase(p), opts);
|
return this.baseFs.readdirPromise(this.mapToBase(p), opts);
|
||||||
}
|
}
|
||||||
readdirSync(p, opts) {
|
readdirSync(p, opts) {
|
||||||
@@ -931,12 +932,24 @@ class NodeFS extends BasePortableFakeFS {
|
|||||||
this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
|
this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
|
||||||
}
|
}
|
||||||
}).then((dir) => {
|
}).then((dir) => {
|
||||||
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
|
const dirWithFixedPath = dir;
|
||||||
|
Object.defineProperty(dirWithFixedPath, `path`, {
|
||||||
|
value: p,
|
||||||
|
configurable: true,
|
||||||
|
writable: true
|
||||||
|
});
|
||||||
|
return dirWithFixedPath;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
opendirSync(p, opts) {
|
opendirSync(p, opts) {
|
||||||
const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
|
const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
|
||||||
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
|
const dirWithFixedPath = dir;
|
||||||
|
Object.defineProperty(dirWithFixedPath, `path`, {
|
||||||
|
value: p,
|
||||||
|
configurable: true,
|
||||||
|
writable: true
|
||||||
|
});
|
||||||
|
return dirWithFixedPath;
|
||||||
}
|
}
|
||||||
async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
|
async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
@@ -1214,16 +1227,16 @@ class NodeFS extends BasePortableFakeFS {
|
|||||||
}
|
}
|
||||||
async readdirPromise(p, opts) {
|
async readdirPromise(p, opts) {
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
if (opts == null ? void 0 : opts.withFileTypes) {
|
if (opts) {
|
||||||
this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject));
|
this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
|
||||||
} else {
|
} else {
|
||||||
this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
|
this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
readdirSync(p, opts) {
|
readdirSync(p, opts) {
|
||||||
if (opts == null ? void 0 : opts.withFileTypes) {
|
if (opts) {
|
||||||
return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true });
|
return this.realFs.readdirSync(npath.fromPortablePath(p), opts);
|
||||||
} else {
|
} else {
|
||||||
return this.realFs.readdirSync(npath.fromPortablePath(p));
|
return this.realFs.readdirSync(npath.fromPortablePath(p));
|
||||||
}
|
}
|
||||||
@@ -1357,6 +1370,10 @@ class VirtualFS extends ProxiedFS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
|
||||||
|
const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13;
|
||||||
|
const HAS_LAZY_LOADED_TRANSLATORS = major > 19 || major === 19 && minor >= 3;
|
||||||
|
|
||||||
const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`)));
|
const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`)));
|
||||||
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
|
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
|
||||||
function readPackageScope(checkPath) {
|
function readPackageScope(checkPath) {
|
||||||
@@ -1384,11 +1401,6 @@ function readPackage(requestPath) {
|
|||||||
return JSON.parse(fs.readFileSync(jsonPath, `utf8`));
|
return JSON.parse(fs.readFileSync(jsonPath, `utf8`));
|
||||||
}
|
}
|
||||||
|
|
||||||
const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
|
|
||||||
const HAS_CONSOLIDATED_HOOKS = major > 16 || major === 16 && minor >= 12;
|
|
||||||
const HAS_UNFLAGGED_JSON_MODULES = major > 17 || major === 17 && minor >= 5 || major === 16 && minor >= 15;
|
|
||||||
const HAS_JSON_IMPORT_ASSERTION_REQUIREMENT = major > 17 || major === 17 && minor >= 1 || major === 16 && minor > 14;
|
|
||||||
|
|
||||||
async function tryReadFile$1(path2) {
|
async function tryReadFile$1(path2) {
|
||||||
try {
|
try {
|
||||||
return await fs.promises.readFile(path2, `utf8`);
|
return await fs.promises.readFile(path2, `utf8`);
|
||||||
@@ -1424,11 +1436,7 @@ function getFileFormat(filepath) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
case `.json`: {
|
case `.json`: {
|
||||||
if (HAS_UNFLAGGED_JSON_MODULES)
|
return `json`;
|
||||||
return `json`;
|
|
||||||
throw new Error(
|
|
||||||
`Unknown file extension ".json" for ${filepath}`
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
case `.js`: {
|
case `.js`: {
|
||||||
const pkg = readPackageScope(filepath);
|
const pkg = readPackageScope(filepath);
|
||||||
@@ -1449,54 +1457,32 @@ function getFileFormat(filepath) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getFormat$1(resolved, context, defaultGetFormat) {
|
|
||||||
const url = tryParseURL(resolved);
|
|
||||||
if ((url == null ? void 0 : url.protocol) !== `file:`)
|
|
||||||
return defaultGetFormat(resolved, context, defaultGetFormat);
|
|
||||||
const format = getFileFormat(fileURLToPath(url));
|
|
||||||
if (format) {
|
|
||||||
return {
|
|
||||||
format
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return defaultGetFormat(resolved, context, defaultGetFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getSource$1(urlString, context, defaultGetSource) {
|
|
||||||
const url = tryParseURL(urlString);
|
|
||||||
if ((url == null ? void 0 : url.protocol) !== `file:`)
|
|
||||||
return defaultGetSource(urlString, context, defaultGetSource);
|
|
||||||
return {
|
|
||||||
source: await fs.promises.readFile(fileURLToPath(url), `utf8`)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
async function load$1(urlString, context, nextLoad) {
|
async function load$1(urlString, context, nextLoad) {
|
||||||
var _a;
|
|
||||||
const url = tryParseURL(urlString);
|
const url = tryParseURL(urlString);
|
||||||
if ((url == null ? void 0 : url.protocol) !== `file:`)
|
if (url?.protocol !== `file:`)
|
||||||
return nextLoad(urlString, context, nextLoad);
|
return nextLoad(urlString, context, nextLoad);
|
||||||
const filePath = fileURLToPath(url);
|
const filePath = fileURLToPath(url);
|
||||||
const format = getFileFormat(filePath);
|
const format = getFileFormat(filePath);
|
||||||
if (!format)
|
if (!format)
|
||||||
return nextLoad(urlString, context, nextLoad);
|
return nextLoad(urlString, context, nextLoad);
|
||||||
if (HAS_JSON_IMPORT_ASSERTION_REQUIREMENT && format === `json` && ((_a = context.importAssertions) == null ? void 0 : _a.type) !== `json`) {
|
if (format === `json` && context.importAssertions?.type !== `json`) {
|
||||||
const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import assertion of type "json"`);
|
const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import assertion of type "json"`);
|
||||||
err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`;
|
err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`;
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
|
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
|
||||||
|
const pathToSend = pathToFileURL(
|
||||||
|
npath.fromPortablePath(
|
||||||
|
VirtualFS.resolveVirtual(npath.toPortablePath(filePath))
|
||||||
|
)
|
||||||
|
).href;
|
||||||
process.send({
|
process.send({
|
||||||
"watch:import": pathToFileURL(
|
"watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS ? [pathToSend] : pathToSend
|
||||||
npath.fromPortablePath(
|
|
||||||
VirtualFS.resolveVirtual(npath.toPortablePath(filePath))
|
|
||||||
)
|
|
||||||
).href
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
format,
|
format,
|
||||||
source: await fs.promises.readFile(filePath, `utf8`),
|
source: format === `commonjs` ? void 0 : await fs.promises.readFile(filePath, `utf8`),
|
||||||
shortCircuit: true
|
shortCircuit: true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1880,12 +1866,7 @@ function patternKeyCompare(a, b) {
|
|||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
function packageImportsResolve({
|
function packageImportsResolve({ name, base, conditions, readFileSyncFn }) {
|
||||||
name,
|
|
||||||
base,
|
|
||||||
conditions,
|
|
||||||
readFileSyncFn
|
|
||||||
}) {
|
|
||||||
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
|
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
|
||||||
const reason = "is not a valid internal imports specifier name";
|
const reason = "is not a valid internal imports specifier name";
|
||||||
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base));
|
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base));
|
||||||
@@ -1992,7 +1973,7 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
|
|||||||
specifier = fileURLToPath(url);
|
specifier = fileURLToPath(url);
|
||||||
}
|
}
|
||||||
const { parentURL, conditions = [] } = context;
|
const { parentURL, conditions = [] } = context;
|
||||||
const issuer = parentURL ? fileURLToPath(parentURL) : process.cwd();
|
const issuer = parentURL && tryParseURL(parentURL)?.protocol === `file:` ? fileURLToPath(parentURL) : process.cwd();
|
||||||
const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null);
|
const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null);
|
||||||
if (!pnpapi)
|
if (!pnpapi)
|
||||||
return nextResolve(originalSpecifier, context, nextResolve);
|
return nextResolve(originalSpecifier, context, nextResolve);
|
||||||
@@ -2002,7 +1983,7 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
|
|||||||
let allowLegacyResolve = false;
|
let allowLegacyResolve = false;
|
||||||
if (dependencyNameMatch) {
|
if (dependencyNameMatch) {
|
||||||
const [, dependencyName, subPath] = dependencyNameMatch;
|
const [, dependencyName, subPath] = dependencyNameMatch;
|
||||||
if (subPath === ``) {
|
if (subPath === `` && dependencyName !== `pnpapi`) {
|
||||||
const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer);
|
const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer);
|
||||||
if (resolved) {
|
if (resolved) {
|
||||||
const content = await tryReadFile$1(resolved);
|
const content = await tryReadFile$1(resolved);
|
||||||
@@ -2013,10 +1994,17 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const result = pnpapi.resolveRequest(specifier, issuer, {
|
let result;
|
||||||
conditions: new Set(conditions),
|
try {
|
||||||
extensions: allowLegacyResolve ? void 0 : []
|
result = pnpapi.resolveRequest(specifier, issuer, {
|
||||||
});
|
conditions: new Set(conditions),
|
||||||
|
extensions: allowLegacyResolve ? void 0 : []
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`)
|
||||||
|
err.code = `ERR_MODULE_NOT_FOUND`;
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
if (!result)
|
if (!result)
|
||||||
throw new Error(`Resolving '${specifier}' from '${issuer}' failed`);
|
throw new Error(`Resolving '${specifier}' from '${issuer}' failed`);
|
||||||
const resultURL = pathToFileURL(result);
|
const resultURL = pathToFileURL(result);
|
||||||
@@ -2032,36 +2020,36 @@ async function resolve$1(originalSpecifier, context, nextResolve) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const binding = process.binding(`fs`);
|
if (!HAS_LAZY_LOADED_TRANSLATORS) {
|
||||||
const originalfstat = binding.fstat;
|
const binding = process.binding(`fs`);
|
||||||
const ZIP_MASK = 4278190080;
|
const originalfstat = binding.fstat;
|
||||||
const ZIP_MAGIC = 704643072;
|
const ZIP_MASK = 4278190080;
|
||||||
binding.fstat = function(...args) {
|
const ZIP_MAGIC = 704643072;
|
||||||
const [fd, useBigint, req] = args;
|
binding.fstat = function(...args) {
|
||||||
if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) {
|
const [fd, useBigint, req] = args;
|
||||||
try {
|
if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) {
|
||||||
const stats = fs.fstatSync(fd);
|
try {
|
||||||
return new Float64Array([
|
const stats = fs.fstatSync(fd);
|
||||||
stats.dev,
|
return new Float64Array([
|
||||||
stats.mode,
|
stats.dev,
|
||||||
stats.nlink,
|
stats.mode,
|
||||||
stats.uid,
|
stats.nlink,
|
||||||
stats.gid,
|
stats.uid,
|
||||||
stats.rdev,
|
stats.gid,
|
||||||
stats.blksize,
|
stats.rdev,
|
||||||
stats.ino,
|
stats.blksize,
|
||||||
stats.size,
|
stats.ino,
|
||||||
stats.blocks
|
stats.size,
|
||||||
]);
|
stats.blocks
|
||||||
} catch {
|
]);
|
||||||
|
} catch {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
return originalfstat.apply(this, args);
|
||||||
return originalfstat.apply(this, args);
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
const resolve = resolve$1;
|
const resolve = resolve$1;
|
||||||
const getFormat = HAS_CONSOLIDATED_HOOKS ? void 0 : getFormat$1;
|
const load = load$1;
|
||||||
const getSource = HAS_CONSOLIDATED_HOOKS ? void 0 : getSource$1;
|
|
||||||
const load = HAS_CONSOLIDATED_HOOKS ? load$1 : void 0;
|
|
||||||
|
|
||||||
export { getFormat, getSource, load, resolve };
|
export { load, resolve };
|
||||||
|
|||||||
Vendored
+2
-1
@@ -6,5 +6,6 @@
|
|||||||
"eslint.nodePath": ".yarn/sdks",
|
"eslint.nodePath": ".yarn/sdks",
|
||||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
||||||
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
||||||
"typescript.enablePromptUseWorkspaceTsdk": true
|
"typescript.enablePromptUseWorkspaceTsdk": true,
|
||||||
|
"terraform.languageServer.enable": false
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user